Uso de Sass en angular 2


Estoy intentando configurar Sass en mi proyecto Angular 2. Básicamente, según entiendo, hay dos formas de crear un proyecto angular 2

1) Usando angular-cli (https://github.com/angular/angular-cli)

Me referí a la respuesta mencionada en https://stackoverflow.com/a/41541042/2868352 & Pude usar correctamente los archivos scss en el proyecto angular 2, todo funcionó muy bien, pero no pude localizar el archivo css generado desde el archivo scss en la carpeta del proyecto. ¿Podría alguien explicar la razón por la que no se generó ningún archivo css pero aún así funcionó?

2) Usando quickstart seed (https://angular.io/guide/quickstart)

No pude obtener ninguna información sobre cómo configurar sass en el proyecto quickstart. ¿Alguien tiene alguna idea sobre el uso de sass en el proyecto de inicio rápido proporcionado por angular?

Gracias de antemano!

Author: Evan Wieland, 2017-02-24

3 answers

[Compruebe la parte editada al final de esta respuesta en caso de que esté utilizando angular cli]

Explicando cómo usar sass en 'quickstart seed'(https://angular.io/guide/quickstart ) ( https://angular.io/guide/setup#download )

Por favor, siga estos sencillos pasos:

Paso 1: Configurar la semilla de inicio rápido

Utilice los siguientes comandos para configurar

npm install
npm start

Verás 'Hola Angular' en navegador.

Paso 2: Instale node-sass y sass-loader

Utilice los comandos mencionados a continuación para instalar

npm i node-sass -S
npm i sass-loader -S

Ahora puedes ver ambos añadidos en tu paquete 'dependencies' dentro de'.archivo de Json.

Paso 3: Crea 2 carpetas para el código Sass y el código Css

Cree dos carpetas con cualquier nombre en la carpeta "quickstart-master". En este caso, por ejemplo: "sass_folder" y "css_folder". Ahora crear un archivo de demostración 'demo.sass ' and put it dentro de 'sass_folder'. Puedes poner un simple código sass en esto .archivo sass. Se verá así:

  $font-stack:    Helvetica, sans-serif
  $primary-color: #000

  body
    font: 100% $font-stack
    color: $primary-color

Paso 4: Hacer cambios en ' paquete.json ' file

Agregue scripts para Compilar y Ver el código Sass presente en "sass_folder". Después de la compilación, el código css resultante debe almacenarse en "css_folder". Después cambia los "Scripts" en ' paquete.el archivo json debería tener este aspecto:

"scripts": {
     "build": "tsc -p src/",
     "build:watch": "tsc -p src/ -w",
     "build:e2e": "tsc -p e2e/",
     "serve": "lite-server -c=bs-config.json",
     "serve:e2e": "lite-server -c=bs-config.e2e.json",
     "prestart": "npm run build",
     "start": "concurrently \"npm run build:watch\" \"npm run serve\" \"npm run watch:sass\"",
     "pree2e": "npm run build:e2e",
     "e2e": "concurrently \"npm run serve:e2e\" \"npm run protractor\" --kill-others --success first",
     "preprotractor": "webdriver-manager update",
     "protractor": "protractor protractor.config.js",
     "pretest": "npm run build",
     "test": "concurrently \"npm run build:watch\" \"karma start karma.conf.js\"",
     "pretest:once": "npm run build",
     "test:once": "karma start karma.conf.js --single-run",
     "lint": "tslint ./src/**/*.ts -t verbose",
     "build:sass": "node-sass sass_folder/ -o css_folder",
     "watch:sass": "npm run build:sass && node-sass sass_folder/ -wo css_folder/"
  }

Echa un vistazo a 'start', 'build: sass' y 'watch: sass' solo.

Paso 5: Ejecute la aplicación

Ahora puede ejecutar la aplicación mediante el siguiente comando:

npm start

Verá el código css compilado en "css_folder" con el mismo nombre de archivo 'demo.css". Se verá así (En este caso):

body {
  font: 100% Helvetica, sans-serif;
  color: #000; }

Ahora si haces algún cambio en .se reflejará en el archivo sass .css archivo dinámicamente como el script está viendo el código.

Si muestra error, Cierre el .archivo css cuando se realiza cualquier cambio en .sass file.

Nota: Para el código scss puede seguir los mismos pasos. Sólo tienes que poner .secs archivo en "sass_folder" en este caso.

[editado] En caso de que desee utilizar Angular CLI:

En el momento de la creación del nuevo proyecto Angular use cmnds mencionados a continuación:

Para sass:

ng new Demo_Project --style=sass

Para scss:

ng new Demo_Project --style=scss

Para cambiar el estilo existente:

ng set defaults.styleExt scss

Después de esto, puede usar Cli normalmente.

 41
Author: Aman Deep Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-20 16:12:04

Puedo explicarte la primera.

Si está utilizando ng serverlos archivos compilados se guardan en una carpeta oculta en su proyecto.

Si está utilizando ng build, puede ver sus archivos compilados en la carpeta /dist. En esta carpeta puede encontrar sus estilos generales en el archivo estilos.[hashversion].css, pero los estilos de componentes locales se incluyen dentro de main.[hashversion].js por Webpack.

Angular-cli utiliza webpack, y si desea obtener más información, consulte Webpack Docs

ACTUALIZACIÓN

En el segundo caso, tienes que compilar sass manualmente. En la carpeta de la aplicación un tiene una aplicación.componente.ts que se compilarán en la misma carpeta a la aplicación.componente.js por compilador Typescript. Así que tienes que hacer lo mismo con sass. Importe el archivo CSS en el componente.

@Component({
  selector: 'my-app',
  template: `<h1>Hello {{name}}</h1>`,
  stylesUrl: ['app/app.component.css']
})
export class AppComponent  { name = 'Angular'; }

Notó que no puede usar la ruta relativa porque todo se solicitará desde el directorio raíz.

Crea un app.component.sass y pon tus estilos dentro.

Luego ejecute el compilador sass que compila el app.component.sass a app.component.css

Ejecute el servidor y funcionará.

 5
Author: Serginho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-16 12:23:02

Hay dos escenarios principales aquí.

  1. Al crear un nuevo proyecto de CLI Angular, utilice el comando CLI

    ng new my-angular-app --style=scss

  2. Cuando ya se ha configurado un proyecto de CLI Angular, utilice el comando CLI

    ng set default.styleExt scss

En el caso 2, debe convertir manualmente los archivos .css existentes. Puede usar también use sass o less en lugar de scss

Echa un vistazo al artículo completo aquí.

Usando SCSS/SASS / LESS en Angular CLI Proyecto

 1
Author: Jayesh Panchal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-19 09:21:23