Opciones de Angular CLI SASS

337
JDillon522 2016-03-26 02:48.

Soy nuevo en Angular y vengo de la comunidad Ember. Intentando usar el nuevo Angular-CLI basado en Ember-CLI.

Necesito saber la mejor manera de manejar SASS en un nuevo proyecto Angular. Intenté usar el ember-cli-sassrepositorio para ver si funcionaría, ya que varios componentes centrales de Angular-CLI se ejecutan desde los módulos Ember-CLI.

No funcionó, pero no estoy seguro de si configuré mal algo.

Además, ¿cuál es la mejor manera de organizar estilos en un nuevo proyecto de Angular? Sería bueno tener el archivo sass en la misma carpeta que el componente.

15 answers

552
Mertcan Diken 2016-10-03 01:08.

La versión 9 de Angular CLI (utilizada para crear proyectos de Angular 9) ahora se basa en styleesquemas en lugar de styleext. Use el comando así:
ng config [email protected]/angular:component.style scss
y el angular.json resultante se verá así

"schematics": {
   "@schematics/angular:component": {
      "style": "scss"
    }
  }

Otras posibles soluciones y explicaciones:

Para crear un nuevo proyecto con CLI angular con soporte sass, intente esto:

ng new My_New_Project --style=scss 

También puede usar --style=sassy si no sabe la diferencia, lea este artículo breve y fácil y si aún no lo sabe, continúe scssy siga aprendiendo.

Si tiene un proyecto angular 5, use este comando para actualizar la configuración de su proyecto.

ng set defaults.styleExt scss

Para las últimas versiones

Para que Angular 6 establezca un nuevo estilo en un proyecto existente con CLI:

ng config [email protected]/angular:component.styleext scss

O directamente en angular.json:

"schematics": {
      "@schematics/angular:component": {
      "styleext": "scss"
    }
}
347
All Іѕ Vаиітy 2017-01-09 18:28.

Actualización para Angular 6+

  1. Proyectos nuevos

    Al generar un nuevo proyecto con Angular CLI, especifique el preprocesador css como

    • Utilice la sintaxis SCSS

      ng new sassy-project --style=scss
      
    • Utilice la sintaxis de SASS

      ng new sassy-project --style=sass
      
  2. Actualizar proyecto existente

    Establecer el estilo predeterminado en un proyecto existente ejecutando

    El comando anterior actualizará su archivo de espacio de trabajo (angular.json) con

    "schematics": {
        "@schematics/angular:component": {
            "styleext": "scss"
        }
    } 
    

    donde styleextpuede ser scsso sasssegún la elección.




Respuesta original (para Angular <6)

Proyectos nuevos

Para nuevos proyectos podemos configurar las opciones --style=sasso --style=scsssegún el sabor deseado SASS / SCSS

  • Utilice la sintaxis de SASS

    ng new project --style=sass 
    
  • Utilice la sintaxis SCSS

    ng new project --style=scss 
    

luego instalar node-sass,

npm install node-sass --save-dev

Actualización de proyectos existentes

Para angular-clicompilar archivos sass node-sass, tuve que ejecutar,

npm install node-sass --save-dev 

que instala node-sass. Entonces

  • para la sintaxis SASS

    ng set defaults.styleExt sass
    
  • para la sintaxis SCSS

    ng set defaults.styleExt scss
    

para establecer el estilo predeterminadoExt a sass

(o)

cambiar styleExta sasso scsspara la sintaxis deseada en .angular-cli.json,

  • para la sintaxis SASS

    "defaults": {
         "styleExt": "sass",
    }
    
  • para la sintaxis SCSS

    "defaults": {
         "styleExt": "scss",
    }
    


Aunque generó errores de compilación.

ERROR in multi styles
Module not found: Error: Can't resolve '/home/user/projects/project/src/styles.css' in '/home/user/projects/project'
 @ multi styles 

que se solucionó cambiando las líneas de .angular-cli.json,

"styles": [
        "styles.css"
      ],

a cualquiera,

  • para la sintaxis SASS

    "styles": [
            "styles.sass"
          ],
    
  • para la sintaxis SCSS

    "styles": [
            "styles.scss"
          ],
    
38
regnar 2016-05-12 12:12.

Citado de Officials github repo here -

Para usar uno, simplemente instale, por ejemplo

npm install node-sass

y cambie el nombre de los archivos .css en su proyecto a .scss o .sass. Se compilarán automáticamente. El argumento de opciones de Angular2App tiene opciones sassCompiler, lessCompiler, stylusCompiler y compassCompiler que se pasan directamente a sus respectivos preprocesadores CSS.

Mira aquí

26
Michael P. Bazos 2017-03-03 01:19.

Dile a angular-cli que siempre use scss de forma predeterminada

Para evitar pasar --style scsscada vez que genera un proyecto, es posible que desee ajustar su configuración predeterminada de angular-cli globalmente, con el siguiente comando:

ng set --global defaults.styleExt scss


Tenga en cuenta que algunas versiones de angular-cli contienen un error al leer la bandera global anterior ( ver enlace ). Si su versión contiene este error, genere su proyecto con:

ng new some_project_name --style=scss
21
Jared Wadsworth 2016-11-18 06:22.

Como dijo Mertcan, la mejor manera de usar scss es crear el proyecto con esa opción:

ng new My_New_Project --style=scss 

Angular-cli también agrega una opción para cambiar el preprocesador css predeterminado después de que se haya creado el proyecto usando el comando:

ng set defaults.styleExt scss

Para obtener más información, puede buscar aquí su documentación:

https://github.com/angular/angular-cli

15
JoelParke 2016-12-18 13:51.

¡Me di cuenta de un problema muy molesto al pasar a archivos scss! Uno DEBE pasar de un simple: styleUrls: ['app.component.scss']a styleUrls: ['./app.component.scss'](agregar ./) enapp.component.ts

Lo que hace cuando genera un nuevo proyecto, pero aparentemente no cuando se crea el proyecto predeterminado. Si ve resolver errores durante la compilación de ng, verifique este problema. Solo me tomó ~ 1 hora.

5
Alireza 2017-06-09 23:03.

Lo mejor podría ser ng new myApp --style=scss

Entonces Angular CLI creará cualquier componente nuevo con scss para usted ...

Tenga en cuenta que el uso scssno funciona en el navegador como probablemente sepa ... por lo que necesitamos algo para compilarlo css, por esta razón podemos usar node-sass, instalarlo como se muestra a continuación:

npm install node-sass --save-dev

¡Y deberías estar listo!

Si usa webpack, siga leyendo aquí:

Línea de comando dentro de la carpeta del proyecto donde está su package.json existente: npm install node-sass sass-loader raw-loader --save-dev

En webpack.common.js, busque "reglas:" y agregue este objeto al final de la matriz de reglas (no olvide agregar una coma al final del objeto anterior):

{
  test: /\.scss$/,
  exclude: /node_modules/,
  loaders: ['raw-loader', 'sass-loader'] // sass-loader not scss-loader
}

Luego, en su componente:

@Component({
  styleUrls: ['./filename.scss'],
})

Si desea compatibilidad con CSS global, en el componente de nivel superior (probablemente app.component.ts) elimine la encapsulación e incluya el SCSS:

import {ViewEncapsulation} from '@angular/core';

@Component({
  selector: 'app',
  styleUrls: ['./bootstrap.scss'],
  encapsulation: ViewEncapsulation.None,
  template: ``
})
class App {}

desde Angular starter aquí .

5

ng set --global defaults.styleExt=scssestá en desuso desde ng6. Recibirá este mensaje:

get / set han quedado obsoletos a favor del comando config

Deberías usar:

ng config [email protected]/angular:component '{ styleext: "scss"}'

Si desea apuntar a un proyecto específico (reemplace {proyecto} con el nombre de su proyecto):

ng config projects.{project}[email protected]/angular:component '{ styleext: "scss"}'
3
Edodso2 2018-05-09 13:02.

Angular-CLI es el método recomendado y es el estándar en la comunidad Angular 2+.

Crete un nuevo proyecto con SCSS

ng new My-New-Project --style=sass

Convertir un proyecto existente (CLI menor que v6)

ng set defaults.styleExt scss

(debe cambiar el nombre de todos los archivos .css manualmente con este enfoque, no olvide cambiar el nombre en sus archivos de componentes)


Convertir un proyecto existente (CLI superior a v6)

  1. cambie el nombre de todos los archivos CSS a SCSS y actualice los componentes que hacen referencia a ellos.
  2. agregue lo siguiente a la clave "esquemas" de angular.json (generalmente línea 11):

"@schematics/angular:component": { "styleext": "sass" }

3
Mahozad 2020-03-19 11:07.

Para Angular 9.0 y superior, actualice el "schematics":{}objeto en el archivo angular.json como este:

"schematics": {
  "@schematics/angular:component": {
    "style": "scss"
  }
}
2
Neil Watson 2018-06-02 04:45.

Lo siguiente debería funcionar en un proyecto CLI 6 angular. Es decir, si obtiene:

get / set han quedado obsoletos en favor del comando config.

npm install node-sass --save-dev

Luego ( asegurándose de cambiar el nombre del proyecto )

ng config [email protected]/angular:component.styleext sass

Para obtener su nombre de proyecto predeterminado, use:

ng config defaultProject

Sin embargo: si ha migrado su proyecto desde <6 hasta angular 6, es muy probable que la configuración no esté allí. En cuyo caso, podría obtener:

Carácter JSON no válido: "s" en 0: 0

Por lo tanto angular.json, se requerirá una edición manual de .

Querrá que se parezca a esto (tomando nota de la propiedad styleex):

...
"projects": {
    "Sassy": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {
        "@schematics/angular:component": {
          "styleext": "scss"
        }
      }
...

Me parece un esquema demasiado complejo. ¯_ (ツ) _ / ¯

Ahora tendrá que ir y cambiar todos sus archivos css / less para que sean scss y actualizar cualquier referencia en componentes, etc., pero debería estar listo para comenzar.

2
Just a learner 2019-03-10 14:27.

A partir del 10/3/2019, Anguar abandonó el apoyo del descaro. Independientemente de la opción a la que haya pasado --styleal ejecutar ng new, siempre se .scssgeneran archivos. Es una pena que el apoyo descarado se haya abandonado sin ninguna explicación.

1
Sajith Mantharath 2018-02-13 01:00.

Establecerlo como predeterminado global

ng set defaults.styleExt=scss --global

0
Victor Hugo Arango A. 2018-06-05 05:54.

Integración del preprocesador de CSS Angular CLI admite todos los preprocesadores de CSS principales:

Para usar estos preprocesadores, simplemente agregue el archivo a las styleUrls de su componente:

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  title = 'app works!';
}

Al generar un nuevo proyecto, también puede definir qué extensión desea para los archivos de estilo:

ng new sassy-project --style=sass

O establezca el estilo predeterminado en un proyecto existente:

ng config [email protected]/angular:component.styleext scss

nota: @ schematics / angular es el esquema predeterminado para Angular CLI

Las cadenas de estilo agregadas a la matriz @ Component.styles deben escribirse en CSS porque la CLI no puede aplicar un preprocesador a los estilos en línea.

Basado en documentación angular https://github.com/angular/angular-cli/wiki/stories-css-preprocessors

0
Junaid 2018-06-02 00:19.

Traté de actualizar mi proyecto para usar el sass usando este comando

ng establece valores predeterminados.styleExt scss

pero tengo esto

get / set han quedado obsoletos en favor del comando config.

  • CLI angular: 6.0.7
  • Nodo: 8.9.0
  • SO: linux x64
  • Angular: 6.0.3

Así que eliminé mi proyecto (ya que estaba comenzando y no tenía código en mi proyecto) y creé uno nuevo con sass inicialmente configurado

ng nueva my-sassy-app --style = scss

Pero agradecería si alguien pudiera compartir una forma de actualizar el proyecto existente, ya que sería bueno.

Related questions

MORE COOL STUFF

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que le diagnosticaron envenenamiento por mercurio y plomo, probablemente debido a su trabajo como manipuladora de casas.

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

Recientemente salió a la luz un informe policial que acusa a la estrella de 'Love Is Blind', Brennon, de violencia doméstica. Ahora, Brennon ha respondido a los reclamos.

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Conozca cómo Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia mientras organizaba la primera celebración de Acción de Gracias desde que murió su madre, Naomi Judd.

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Descubra por qué un destacado experto en lenguaje corporal cree que es fácil trazar "tales paralelismos" entre la princesa Kate Middleton y la princesa Diana.

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los inodoros arrojan columnas de aerosol invisibles con cada descarga. ¿Como sabemos? La prueba fue capturada por láseres de alta potencia.

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

¿Caduca el repelente de insectos?

¿Caduca el repelente de insectos?

¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?

Se revela la estatua de Godzilla más nueva de Tokio

Se revela la estatua de Godzilla más nueva de Tokio

Anteriormente, Kotaku informó que un hotel Godzilla se estaba abriendo en Tokio este abril. Junto al hotel, estaba programada la aparición de una enorme cabeza de 'Zilla, pero todo lo que hemos visto fueron imágenes conceptuales computarizadas.

El alcalde de Chicago realmente quiere que Elon Musk perfore un túnel debajo de la ciudad

El alcalde de Chicago realmente quiere que Elon Musk perfore un túnel debajo de la ciudad

Foto: Getty Desde que lanzó The Boring Company hace un año, Elon Musk ha mencionado varios sitios de construcción posibles para el negocio de perforación de túneles y ha descartado una vaga referencia a una aprobación gubernamental "verbal" para un túnel Hyperloop que conecta la ciudad de Nueva York y Washington. , CC. Pero ahora sabemos que al menos un alcalde quiere que Musk perfore un agujero debajo de su ciudad.

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Tapas elásticas de silicona de Tomorrow's Kitchen, paquete de 12 | $14 | Amazonas | Código promocional 20OFFKINJALids son básicamente los calcetines de la cocina; siempre perdiéndose, dejando contenedores huérfanos que nunca podrán volver a cerrarse. Pero, ¿y si sus tapas pudieran estirarse y adaptarse a todos los recipientes, ollas, sartenes e incluso frutas en rodajas grandes que sobran? Nunca más tendrás que preocuparte por perder esa tapa tan específica.

Cuéntanos tus mejores trucos de Washington, DC

Cuéntanos tus mejores trucos de Washington, DC

Hemos pirateado algunas ciudades industriales en esta columna, como Los Ángeles y Las Vegas. Ahora es el momento de una ciudad militar-industrial-compleja.

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

El equipo está a la espera de las medallas que ganó en los Juegos Olímpicos de Invierno de 2022 en Beijing, ya que se está resolviendo un caso de dopaje que involucra a la patinadora artística rusa Kamila Valieva.

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Miles de compradores de Amazon recomiendan la funda de almohada de seda Mulberry, y está a la venta en este momento. La funda de almohada de seda viene en varios colores y ayuda a mantener el cabello suave y la piel clara. Compre las fundas de almohada de seda mientras tienen hasta un 46 por ciento de descuento en Amazon

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

El jueves se presentó una denuncia de delito menor amenazante agravado contra Joe Mixon.

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

El Departamento de Policía de Lafayette comenzó a investigar a un profesor de la Universidad de Purdue en diciembre después de recibir varias denuncias de un "hombre sospechoso que se acercaba a una mujer".

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Al igual que el mundo que nos rodea, el lenguaje siempre está cambiando. Mientras que en eras anteriores los cambios en el idioma ocurrían durante años o incluso décadas, ahora pueden ocurrir en cuestión de días o incluso horas.

India me está pateando el culo

India me está pateando el culo

Estoy de vuelta por primera vez en seis años. No puedo decirte cuánto tiempo he estado esperando esto.

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

¿Merrick Garland le ha fallado a Estados Unidos?

Es más de la mitad de la presidencia de Biden. ¿Qué está esperando Merrick Garland?

¿Merrick Garland le ha fallado a Estados Unidos?

Creo, un poco tarde en la vida, en dar oportunidades a la gente. Generosamente.

Language