SASS:如何在构建前替换导入(Ember 项目)
SASS: How to substitute imports before build (Ember project)
我有Ember JS项目和主scss文件(app.scss),我有一个ENV变量(STYLE_NAME)。
我需要替换 app.scss 的内容粘贴 @import 'STYLE_NAME';
其中 STYLE_NAME
- 是来自 process.env.STYLE_NAME;
[ 的字符串=18=]
我在同一文件夹中有很多 STYLE_NAME
个 scss 文件。
因此,通过执行控制台命令 env STYLE_NAME=theme1 ember build
,
我需要得到 app.scss 包含以下内容:
...
...
...
@import 'theme1';
@import 'main'; // this import is always the last one
如果我需要在我自己的应用程序中执行此操作,我会避免将导入名称设为动态。
您的 .scss
文件只是:
@import 'theme';
@import 'main'; // this import is always the last one
然后在 ember-cli-build.js
文件中,使用 process.env.STYLE_NAME 从正确的目录中获取主题。
'use strict';
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
let app = new EmberApp(defaults, {
sassOptions: {
includePaths: [
`vendor/${process.env.STYLE_NAME}/theme`
]
}
});
return app.toTree();
};
所以最后,每个“品牌”都会在某处获得自己的目录(我随意选择了 vendor
作为示例)。然后当 运行 / building 时,你做类似 STYLE_NAME='brand1' ember s
的事情并且包含正确的文件。然后,您只需确保每个主题目录都遵循相同的结构。
如果由于某种原因这对您不起作用,您可以查看 broccoli-funnel 以获取动态内容,包括构建期间所需的文件。
我有Ember JS项目和主scss文件(app.scss),我有一个ENV变量(STYLE_NAME)。
我需要替换 app.scss 的内容粘贴 @import 'STYLE_NAME';
其中 STYLE_NAME
- 是来自 process.env.STYLE_NAME;
[ 的字符串=18=]
我在同一文件夹中有很多 STYLE_NAME
个 scss 文件。
因此,通过执行控制台命令 env STYLE_NAME=theme1 ember build
,
我需要得到 app.scss 包含以下内容:
...
...
...
@import 'theme1';
@import 'main'; // this import is always the last one
如果我需要在我自己的应用程序中执行此操作,我会避免将导入名称设为动态。
您的 .scss
文件只是:
@import 'theme';
@import 'main'; // this import is always the last one
然后在 ember-cli-build.js
文件中,使用 process.env.STYLE_NAME 从正确的目录中获取主题。
'use strict';
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function(defaults) {
let app = new EmberApp(defaults, {
sassOptions: {
includePaths: [
`vendor/${process.env.STYLE_NAME}/theme`
]
}
});
return app.toTree();
};
所以最后,每个“品牌”都会在某处获得自己的目录(我随意选择了 vendor
作为示例)。然后当 运行 / building 时,你做类似 STYLE_NAME='brand1' ember s
的事情并且包含正确的文件。然后,您只需确保每个主题目录都遵循相同的结构。
如果由于某种原因这对您不起作用,您可以查看 broccoli-funnel 以获取动态内容,包括构建期间所需的文件。