使用webpack基于环境变量的SASS条件导入(在每个环境中使用不同的主题)

时间:2019-11-28 10:28:00

标签: webpack sass environment-variables

对于我的Vue网站项目,它使用一个样式表,该样式表是使用SASS的Webpack生成的,我想要:

基于环境变量的有条件的SASS导入


示例设置:

.env :例如,如果我有一个包含以下内容的环境:

SASS_THEME="soft"

soft.scss :包含以下内容的SASS主题文件:

$color-alpha: #e5e5e5;

main.scss :一个看起来像这样的主sass文件:

// Import theme variables here
@import '${SASS_THEME}';

body{
    background: $color-alpha;
}

1 个答案:

答案 0 :(得分:1)

您可以使用webpack别名。它应该是带有主题的文件的路径。

const env = require('./.env');
...
const theme = getThemeFromEnv(env); // you need to implement this method
...
resolve: {
 alias: {
  @SASS_THEME: theme
 }
}

然后在scss文件中使用它:

// Import theme variables here
@import '@SASS_THEME';

body{
    background: $color-alpha;
}

UPD 使用raw-loader加载.env文件:

rules: [
      {
        test: /\.env$/,
        use: 'raw-loader',
      },
],

它将加载任何内容作为原始字符串

UPD2
我已经知道如何使用.env软件包加载dotenv

const dotenv = require('dotenv').config({path: __dirname + '/.env'});

console.log(dotenv.parsed) // output { SASS_THEME: 'soft' }