webpack提取css出现了一点问题?

查看:135
本文介绍了webpack提取css出现了一点问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

为什么extractLib提取的css正确地提取到了独立的css文件,但是extractStyle提取的css并没有提取到独立的css文件,而是被以<style></style>的方式放在了<head></head>头部里面?

webpack版本:

"webpack": "^3.2.0",

webpack配置:

const path = require("path");
const ExtractTextPlugin = require("extract-text-webpack-plugin");

// 创建多个实例
const extractLib = new ExtractTextPlugin({
  filename: "css/[name]-lib.css",
});
const extractStyle = new ExtractTextPlugin({
  filename: "css/[name]-style.css",
});

module.exports = {
  output: {
    path: path.join(__dirname, "dist"),
    filename: "js/[name].js",
  },
  resolve: {
    extensions: [".js", ".jsx"],
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        loader: "babel-loader",
        exclude: /node_modules/,
        include: __dirname,
      },
      {
        test: /\.css$/,
        include: /node_modules/,
        use: extractLib.extract({
          fallback: "style-loader",
          use: [
            {
              loader: "css-loader",
            },
          ],
        }),
      },
      {
        test: /\.less$/,
        exclude: /node_modules/,
        use: extractStyle.extract({
          fallback: "style-loader",
          use: [
            {
              loader: "css-loader",
              options: {
                modules: true,
                importLoaders: 1,
                localIdentName: "[name]__[local]___[hash:base64:5]",
              },
            },
            {
              loader: "postcss-loader",
            },
            {
              loader: "less-loader",
            },
          ],
        }),
      },
    ],
  },
  plugins: [
    extractLib,
    extractStyle,
  ],
};

解决方案

.css那个loader里你include了/node_modules/?看代码应该没问题,我本地试了一下可以正常导出到两个文件中,你检查一下插件版本是不是适合webpack3
我这边的版本是

"extract-text-webpack-plugin": "^2.1.0",
"webpack": "^2.5.1",

========= 补充回答 @楼主 ============
楼主你这边实现多css文件导出的方法和链接里的不一样,你这边是多个插件实例,链接里是多个entry

allchunks这个属性必须要配合CommonsChunkPlugin这个插件使用,
它的作用是,对于多entry里的css文件,如下图,每个入口里的css文件代码大多相同,这部分代码标记为a,只有部分不相同分别标记为b,c,d,
那么其值为true,会输出4个文件,包含代码分别为a,b,c,d
如果其值为false,则会输出3个文件,包含代码分别为ab,ac,ad

如果不配合CommonsChunkPlugin,值为true也是没效果的

配合CommonsChunkPlugin,提取公共部分代码

这篇关于webpack提取css出现了一点问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆