如何在webpack中将scss预编译为单个css文件?

时间:2016-10-19 07:00:50

标签: css reactjs sass webpack webpack-style-loader

将React与webpack一起使用。 通过一些文章,但大多数建议为每个组件调用单独的scss文件。但我想将所有css预编译为整个应用程序的单个文件,就像我们使用grunt / gulp一样。

enter image description here

2 个答案:

答案 0 :(得分:5)

您可以使用负责编译所有css文件的webpack-text-extract-pluggin并将其捆绑在index.css文件中。

另请注意,您还需要安装sass-loader才能编译scss。

在webpack配置中:

var ExtractTextPlugin = require('extract-text-webpack-plugin');
config = {
    ..., 
    plugins: [
        ...,
        new ExtractTextPlugin('index.css')
    ],
    module: {
        loaders: [
            ...
            {
                test: /\.css$/,
                loader: ExtractTextPlugin.extract('style','css')
            },
            {
                test: /\.scss$/,
                loader: ExtractTextPlugin.extract('style', 'css!sass')
            }
        ]
    }
}

在index.html中:

<link rel="stylesheet" type="text/css" href="/index.css">

在任何通过webpack的Javascript文件中:

require("./styles/my-custom-file.scss");

答案 1 :(得分:3)

您可以查看extract-text-webpack-plugin

在你的webpack.config.js中要求这个:

var ExtractTextPlugin = require("extract-text-webpack-plugin");

您可以将sass加载程序重写为:

module: {
    loaders: [
        {test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'},
        {test: /\.scss$/, loader: ExtractTextPlugin.extract('style', 'css', 'sass')}
    ]
},
plugins: [
    new ExtractTextPlugin('bundle.css')
]

有关更多选项和用法,请查看上面的链接。