首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack:如何合并css和less,然后应用cssnano

Webpack:如何合并css和less,然后应用cssnano
EN

Stack Overflow用户
提问于 2017-09-20 20:32:24
回答 1查看 927关注 0票数 0

我设法将我的css和更少的资源(从javascript“导入”)编译成all-my-LESS|CSS,使用ExtractTextPlugin提取它们,然后用MergeFilesPlugin将它们合并到combinedStyles.css中。

我遗漏了一点:如何运行cssnano (例如通过postcss?)最重要的是作为最后的一部分?(哦,虽然我有内联的源代码映射,但我没有设法生成一个外部combinedStyles.map文件)。

这是我的组合webpack.config.babel.js (忽略babel位,只是意味着,您可以用ES6编写它,使用更花哨的导入语句):

代码语言:javascript
复制
import path from 'path';

const webpack = require('webpack'); //to access built-in plugins
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import MergeFilesPlugin from 'merge-files-webpack-plugin';

const extractCSS = new ExtractTextPlugin("all-my-CSS.css");
const extractLESS = new ExtractTextPlugin("all-my-LESS.css");

export default {
    entry: [ './src/index_5.js' ],
    output: {
        path: path.resolve( 'dist')
        filename: 'bundle.js',
        sourceMapFilename: './bundle.js.map'
    },

    module: {
        rules: [{
                test: /\.css$/,
                use: extractCSS.extract(
                    [{  // This is basically "use"
                        loader: "css-loader",
                        options: {
                            minimize: false, // done later
                            sourceMap: true,
                            modules: false, // no css modules, all global styles
                        }
                    }]
                )
            },
            {
                test: /\.less$/,
                use: extractLESS.extract(  // This is basically "use"
                    [// No style-loader here! We want this external!
                    {
                        loader: "css-loader", // translates CSS into CommonJS
                        options: {
                            minimize: false,
                            sourceMap: true
                        }
                    }, {
                        loader: "less-loader", // compiles Less to CSS
                        options: {
                            sourceMap: true,
                        }
                    }]
                )
            }
        ] // rules
    }, // module

    devtool: 'inline-source-map',
    devServer: { inline: true },

    plugins: [
        extractCSS,
        extractLESS,
        new MergeFilesPlugin({
            filename: 'combinedStyles.css', //output filename
            test: /\.css$/,
            deleteSourceFiles: false // for now
        })
    ]
};
EN

回答 1

Stack Overflow用户

发布于 2017-09-29 13:30:18

我已经用css-nano添加了postcss-loader,看看它是否有帮助。

另外,我不认为这里需要使用MergeFilesPlugins (这只是我的观点)。ExtractTextPlugin在这里很有用。

只需使用一个ExtractTextPlugin并将所有css或更少的文件放在一个文件夹中(与.css或.less扩展),加载器将被选择性地应用于他们,稍后在插件中只需使用

代码语言:javascript
复制
new ExtractTextPlugin('style.css')

来提取一个常见的css文件。

使用cssnano:

代码语言:javascript
复制
[{
                test: /\.css$/,
                use: ExtractTextPlugin.extract(
                    [{  // This is basically "use"
                        loader: "css-loader",
                        options: {
                            minimize: false, // done later
                            sourceMap: true,
                            modules: false, // no css modules, all global styles
                        }
                    },
                    {
                        loader: 'postcss-loader',
                        options: {
                                plugins: function () {
                                        return [
                                        require('cssnano')({
                                            autoprefixer: false,
                                            safe: true
                                            })
                                        ];
                                }
                           }
                    }]
                )
            },
            {
                test: /\.less$/,
                use: ExtractTextPlugin.extract(  // This is basically "use"
                    [// No style-loader here! We want this external!
                    {
                        loader: "css-loader", // translates CSS into CommonJS
                        options: {
                            minimize: false,
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'postcss-loader',
                        options: {
                                plugins: function () {
                                        return [
                                        require('cssnano')({
                                            autoprefixer: false,
                                            safe: true
                                            })
                                        ];
                                 }
                            }
                    },
                    {
                        loader: "less-loader", // compiles Less to CSS
                        options: {
                            sourceMap: true,
                        }
                    }]
                )
            }
        ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46322223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档