ami*_*mik 6 css sass source-maps webpack
我已将 webpack 配置为转译 scss -> css,但 webpack 生成的 sourcemap 无法解析 scss @import。
webpack.config.js:
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const outputPath = path.join(__dirname, 'dist');
module.exports = {
    devtool: 'source-map',
    entry: ['./src/main.scss'],
    target: 'web',
    output: {
        filename: 'js/[name].bundle.js',
        path: outputPath
    },
    module: {
        rules: [
            { // sass / scss loader for webpack
                test: /\.(sass|scss)$/,
                loader: ExtractTextPlugin.extract([
                    {
                        loader: 'css-loader',
                        options: {
                            url: false,
                            import: true,
                            minimize: true,
                            sourceMap: true,
                        }
                    },
                    'sass-loader'
                ])
            },
        ]
    },
    plugins: [
        new ExtractTextPlugin({ // define where to save the file
            filename: 'css/[name].bundle.css',
            allChunks: true,
        })
    ]
};
主文件:
@import 'foo';
_foo.scss:
h1 { color: red; }
但是,在 Chrome 开发工具中,我看到了对main.scss我期望引用的位置的引用_foo.scss- 请参见下面的屏幕截图:
当您处于开发模式时,不应使用 extractTextPlugin。请为开发和生产模式进行额外的配置。在生产中使用 extractTextPlugin 很好,但在开发模式下它不是必需的,并且可能导致其他功能不起作用。所以改用样式加载器。
另外 - 我不确定这是否能解决您的问题 - 尝试在 css 加载器上使用 importLoaders 道具。在这里查看更多信息:
https://github.com/webpack-contrib/css-loader#importloaders
const path = require('path');
const outputPath = path.join(__dirname, 'dist');
module.exports = {
    devtool: 'source-map',
    entry: ['./src/main.scss'],
    target: 'web',
    output: {
        filename: 'js/[name].bundle.js',
        path: outputPath
    },
    module: {
        rules: [
            { // sass / scss loader for webpack
                test: /\.(sass|scss)$/,
                loader: [
                    {
                        loader: 'style-loader',
                        options: {
                          sourceMap: true
                        }
                    },
                    {
                        loader: 'css-loader',
                        options: {
                            url: false,
                            import: true,
                            minimize: true,
                            sourceMap: true,
                            importLoaders: 1,
                        }
                    },
                    {
                       loader: 'sass-loader',
                       options: {
                         sourceMap: true
                       }
                    }
                ]
            },
        ]
    }
};
你在sass-loader那里,用以下命令切换它:
{
   loader: 'sass-loader',
   options: {
     sourceMap: true
   }
}
那会起作用的。
| 归档时间: | 
 | 
| 查看次数: | 1276 次 | 
| 最近记录: |