Finalement, un a trouvé ce question, qui m'a conduit à la solution.
Il est dit de créer plusieurs applications avec différents fichiers .scss
en .angular-cli.json
.
Étape 1: Créer plusieurs dossiers avec le fichier .scss
pour chaque environnement, tous les fichiers .scss
a le même nom:
|- src
...
|- environments
|- app1
|- scss
|- globalVars.scss
|- environment.dev.ts
|- environment.prod.ts
|- app2
|- scss
|- globalVars.scss
|- environment.dev.ts
|- environment.prod.ts
...
dans src/environnement/app1/SCSS/globalVars.scss: $ profile: 'app1'.
dans src/environments/app2/scss/globalVars.scss: $ profile: 'app2'.
Étape 2:
Ajouter plusieurs applications dans .angular-cli.json
(Angular-cli Wiki Here ) et ajoutez l'entrée stylePreprocessorOptions
dans chaque objet application pour chaque environnement (Angular-cli Wiki Here).
"apps": [
{
...
"name": "app1",
"environments": {
"dev": "environments/app1/environment.dev.ts",
"prod": "environments/app1/environment.prod.ts"
},
"stylePreprocessorOptions": {
"includePaths": [
"environments/app1/scss"
]
}
...
},
{
...
"name": "app2",
"environments": {
"dev": "environments/app2/environment.dev.ts",
"prod": "environments/app2/environment.prod.ts"
},
"stylePreprocessorOptions": {
"includePaths": [
"environments/app2/scss"
]
}
...
},
...
],
Étape 3:
Importer le globalVars.scss
où les variables spécifiques env nécessaires. N'utilisez pas le chemin relatif!
@import "globalVars";
Lorsque vous utilisez ng build --app=app1
, le $profile
sera 'app1'
et ainsi de suite.
Étape 4: Sur mon theme.scss
i utilisé la variable comme ceci:
.my-style {
@if $profile == 'app1' {@include angular-material-theme($theme-app1);}
@if $profile == 'app2' {@include angular-material-theme($theme-app2);}
&.contrast {
@include angular-material-theme($theme-contrast);
}
}
Que diriez-vous d'écraser cette valeur css avec copie stockée localement dans chaque environnement d'un autre fichier css: import url ("de department_store. css "); Pas sûr de sass mais je pense qu'ils utilisent pour cela. – numbtongue