And*_*lia 18 css sass webpack sass-loader webpack-4
我有以下示例配置使用带有Webpack 4的mini-css-extract-plugin:
entry: {
a: ['./js/a.js', './scss/a.scss'],
b: ['./js/b.js', './scss/b.scss']
},
module: {
rules: [
[...],
{
test: /\.(css|sass|scss)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
importLoaders: 2,
sourceMap: true
}
},
{
loader: 'postcss-loader',
options: {
plugins: () => [
require('autoprefixer')
],
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
js: {
test: /\.js$/,
name: "commons",
chunks: "all",
minChunks: 7,
},
css: {
test: /\.(css|sass|scss)$/,
name: "commons",
chunks: "all",
minChunks: 2,
}
}
}
},
plugins: [
new MiniCssExtractPlugin({
filename: "dist/[name].css",
}),
]
Run Code Online (Sandbox Code Playgroud)
以下sass文件:
// a.scss
@import 'libA.scss';
@import 'libB.css';
[...]
// b.scss
@import 'libA.scss';
@import 'libB.css';
[...]
Run Code Online (Sandbox Code Playgroud)
当我运行webpack时libB.css插入commons.cssbundle而libA.scss不是.
通常,每个.css文件导入都由splitChunks选项处理(仅当css名称中指定了扩展名时),而sass import不是.
我有一个带有多个sass入口点的项目和许多sass组件的@import,我想创建一个带有共享sass模块的公共包.
Jim*_*ala 14
我在我的Webpack 4配置中做这样的事情.
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
module: {
rules: [ {
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
modules: true,
sourceMap: true,
importLoader: 2
}
},
"sass-loader"
]}
]
},
plugins: [
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "style.css",
chunkFilename: "[name].css"
]
Run Code Online (Sandbox Code Playgroud)
我还给"output.publicPath"-configuration对象指向我的构建目录,例如 - >
output: {
filename: "[name]-min.js",
path: path.resolve(__dirname, "dist"),
publicPath: "/static/react/dist/"
},
Run Code Online (Sandbox Code Playgroud)
编辑如果您对代码拆分感兴趣,Webpack 4可以为您"开箱即用".如果您使用动态导入,这将为您分割
.js并提供.css相应的文件.
optimization: {
splitChunks: {
chunks: 'all'
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的另一只手想将您合并.css到一个文件中,您可以添加如下.
optimization: {
splitChunks: {
chunks: 'all'
cacheGroups: {
styles: {
name: 'styles',
test: /\.s?css$/,
chunks: 'all',
minChunks: 1,
reuseExistingChunk: true,
enforce: true,
},
}
},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27897 次 |
| 最近记录: |