如何调试Webpack捆绑的CSS?

van*_*ert 7 css webpack webpack-style-loader postcss css-loader

我已从过去的方式切换为不再包含样式表:

<link rel="stylesheet" href="./../css/main.css">
Run Code Online (Sandbox Code Playgroud)

Webpack方法:

var css = require('./../css/main.css');
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是我不喜欢它从该文件中将css提取到内联标签中,因为那样很难在Dev Tools中对其进行调试。例如,我不知道这些属性来自哪个文件和行:
在此处输入图片说明

如何将其移动到单独的文件或生成将我指向源文件的源映射?因此,当我检查开发工具时,它将看起来像这样:

在此处输入图片说明

我的webpack.config.js

var autoprefixer = require('autoprefixer');

module.exports = {
    devtool: "css-loader?sourceMap",
    module:  {
        loaders: [
            {test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000'},
            {
                test:   /\.css$/,
                loader: "style-loader!css-loader!postcss-loader"
            }
        ]
    },
    entry:   [
        './static/js/app.js'
    ],
    output:  {
        filename: './static/js/bundle.js'
    },
    watch:   false,
    postcss: function () {
        return [autoprefixer];
    }
};
Run Code Online (Sandbox Code Playgroud)

我的app.js

var $ = require('jquery');
window.jQuery = $;
window.$ = $;
require('bootstrap-loader');

module.exports = (function () {
    alert('IT WORKS!');
});

window.app = module.exports;
var css = require('./../css/main.css');
Run Code Online (Sandbox Code Playgroud)

jal*_*jal 3

要将样式从包中提取到外部样式表,您需要使用提取文本插件

一般的 webpack 配置如下所示:

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

module.exports = {
    devtool: "source-map",
    entry: 'path/to/entry.js',
    output:  {
        path: 'path/to/bundle'
        filename: 'bundle.js'
    },
    module:  {
        loaders: [
            {
                test:   /\.css$/,
                loader: ExtracTextPlugin.extract('css-loader?sourceMap')
            }
        ]
    },
    plugins: [
         new ExtractTextPlugin('styles.css')
    ]
};
Run Code Online (Sandbox Code Playgroud)

您应该注意的部分用于devtool: "source-map"调试部分,并且通过插件您提供加载器作为参数来提取插件的方法:

loaders: [
    {
        test:   /\.css$/,
        loader: ExtracTextPlugin.extract('css-loader?sourceMap')
    }
]
Run Code Online (Sandbox Code Playgroud)

如果您也需要,您还可以在这里链接装载机sass-loader

loaders: [
    {
        test:   /\.scss$/,
        loader: ExtracTextPlugin.extract('css-loader?sourceMap!sass-loader?sourceMap')
    }
]
Run Code Online (Sandbox Code Playgroud)

您不再需要样式加载器,但您也可以将其作为后备加载器提供给插件:

loaders: [
    { 
        test: /\.css$/,
        loader: ExtractTextPlugin.extract({
            fallbackLoader: "style-loader",
            loader: "css-loader?sourceMap"
        })
    }
]
Run Code Online (Sandbox Code Playgroud)

在你的插件数组中,你实例化插件并提供你想要的外部样式表的名称:

plugins: [
     new ExtractTextPlugin('styles.css')
]
Run Code Online (Sandbox Code Playgroud)

[name]如果您有多个入口点并且每个条目都有一个样式表,您也可以使用占位符。