Je voudrais savoir comment ajouter moins de compilation à mon projet Angular 2. Parce que chaque composant a son propre fichier .css (qui sera désormais un fichier .less)), je ne suis pas sûr de comment je pourrais compiler le fichier en css ...
J'ai également googlé le problème sans trouver de solution à mon problème.
EDIT Pour clarifier ma question: je voudrais avoir un .less pour chaque composant, tout comme c'est le cas par défaut avec les fichiers .css dans Angular 2. Je veux juste chaque .less à précompiler, et parce que Angular inclut le CSS en tant que script en ligne après le traitement du composant par Angular, je suppose que j'ai besoin d'un script de moins de prétraitement entre les deux, existe-t-il?
Je préfère ne pas avoir un gros fichier .less inclus dans le manuel, pour l'ensemble du projet, ce qui serait bien sûr une solution possible. Cette solution ne semble pas être en ligne avec l'environnement Angular cependant ...
MOINS (ou SASS) sont des préprocesseurs CSS, vous devrez donc essentiellement les compiler en CSS. Un moyen très populaire consiste à utiliser un exécuteur de tâches JavaScript basé sur Grunt , Gulp , Brunch ou Broccoli .
Voici un exemple tiré directement de la page de démarrage du brocoli.
npm install -g broccoli-cli
npm install --save-dev broccoli
npm install --save-dev broccoli-sass broccoli-merge-trees
broccoli build dist
Exemple de fichier Brocfile.js
/* Brocfile.js */
// Import some Broccoli plugins
var compileSass = require('broccoli-sass');
var mergeTrees = require('broccoli-merge-trees');
// Specify the Sass and Coffeescript directories
var sassDir = 'app/scss';
// Tell Broccoli how we want the assets to be compiled
var styles = compileSass([sassDir], 'app.scss', 'app.css');
// Merge the compiled styles and scripts into one output directory.
module.exports = mergeTrees([styles, scripts]);enter code here
BTW: vous pouvez facilement changer SASS pour MOINS
Nouveau projet
Vous pouvez utiliser le --style
flag pour définir un préprocesseur CSS
ng new my-app --style less
Projet existant
.angular-cli.json
fichier et définir defaults.styleExt
valeur à less
. Ou vous pouvez utiliser simplement utiliser: ng set defaults.styleExt less
mycomp/mycomp.component.css
-> mycomp/mycomp.component.less
styleUrls
dans mycomp/mycomp.component.ts
, par exemple. styleUrls: ['./mycomp.component.css']
-> styleUrls: ['./mycomp.component.less']
Si vous créez une nouvelle application, juste après le nom de l'application, ajoutez --style
pour choisir votre préprocesseur.
ng new my-first-app --style less
Vous pouvez toujours utiliser un seul .css
qui contient toutes les règles de style pour tous vos composants et importe les mêmes .css
fichier dans chaque composant (vous devez utiliser le nom du sélecteur/tag au lieu de :Host {
). Le navigateur cache le fichier de toute façon, il ne le téléchargera donc qu'une seule fois.
L'avantage de la petite portée .css
les fichiers sont cependant perdus.
Je ne connais pas Less mais pour SASS je travaille actuellement sur un importateur personnalisé où les chemins d'importation peuvent être préfixés avec un identifiant/nom et l'importateur personnalisé vérifie localement si un remplacement pour cet identifiant/nom est défini et le renvoie à la place , sinon l'importation revient à la valeur par défaut.
De cette façon, le créateur de composants peut fournir des crochets de substitution où l'utilisateur peut passer ses propres variables, mixins, ... au lieu de la valeur par défaut au moment de la construction.