Tom*_*arz 3 css source-maps webpack sass-loader postcss-loader
我正在尝试在 webpack 中启用 sourceMaps,但 sass-loader 和 postcss-loader 组合似乎存在问题。
启用 sass-loader 和 postcss-loader 后,我的控制台显示“无源”:
但是当我禁用 postcss-loader 时,sourceMap 工作正常并指向“排版”文件:
webpack.config.js
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
publicPath: '/dist',
filename: 'js/bundle.js',
},
devtool: 'inline-source-map',
module: {
rules: [{
test: /\.css$/i,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: ['css-loader', 'postcss-loader']
})
},
{
test: /\.scss$/i,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [{
loader: 'css-loader',
options: {
sourceMap: true
}
},
{
loader: 'postcss-loader',
options: {
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}
]
})
},
{
test: /\.js$/i,
exclude: /node_modules/,
loader: 'babel-loader'
}
]
},
plugins: [
new ExtractTextPlugin('css/style.css')
]
};
Run Code Online (Sandbox Code Playgroud)
主文件
@import 'typography';
Run Code Online (Sandbox Code Playgroud)
排版.scss
p {
font-size: responsive 12px 18px;
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下操作。这就是我正在使用的并且正在运行。
{
test: /\.(sa|sc|c)ss$/,
exclude: ['/node_modules', './dist', '/src/js', '/docs'],
use: [
MiniCSSExtractPlugin.loader,
{
loader: 'css-loader',
options: {
sourceMap: true,
minimize: process.env.NODE_ENV === 'production',
}
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
syntax: postCssScss,
plugins: () => [
autoprefixer,
postCssPresetEnv({
stage: 0,
features: {
'color-mod-function': true,
'alpha-hex-colors': true
}
}),
],
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
在Webpack4 中,extractTextPlugin已被弃用,取而代之的是miniCssExtractPlugin