webpack - 为每个 webpack block 提取一个 css 文件(require.ensure)

标签 webpack extract-text-plugin extracttextwebpackplugin

在尝试在我们的应用程序中实现页面优化时,我们希望能够为每个 webpack 块生成单独的 CSS 文件,以提高我们应用程序中第一页的页面渲染性能。为了实现这一点,我们一直在尝试将 extract-text-plugin 与 require.ensure 结合使用,如下所示:

const $ = require('load-webpack-plugins')();
module.exports = {
  entry: { 'app': './src/app.js' },
  output: {
    path: 'dist',
    filename: '[name].js'
  },
  devtool: 'source-map',
  module: {
    loaders: [
      { test: /\.js$/, use: [{ loader: 'babel-loader' }] },
      {
        test: /\.css$/,
        use: $.ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: [{ loader: 'css-loader' }]
        })
      }
    ]
  },
  plugins: [
    new $.ExtractTextPlugin({ filename: '[name].[contenthash].css', allChunks: true }),
    new $.NamedModulesPlugin(),
  ]
}

app.js 是:
console.log('this is app.js');

require.ensure([], require => {
  require('./a.css');
}, 'base');

require.ensure([], require => {
  require('./b.css');
}, 'first');

require.ensure([], require => {
  require('./c.css');
}, 'second');

和 a.css 是:
.a {
  color: red;
}

和 b.css 是:
.b {
  color: red;
}

和 c.ss 是:
.c {
  color: red
}

问题 我们是否只有一个 CSS 文件 dist/app.e2e9da337e9ab8b0ca431717de3bea22.css包含所有 3 个块的内容:
.a {
  color: red;
}

.b {
  color: red;
}

.c {
  color: red
}


/*# sourceMappingURL=app.e2e9da337e9ab8b0ca431717de3bea22.css.map*/

在这种情况下,我们如何为每个 webpack 块(require.ensure)提取一个 css 文件?这是否应该由提取文本插件支持。

PS:这是一个演示此问题的示例存储库 - https://github.com/osdevisnot/extract-text-demo

最佳答案

extract-text-plugin 不会在分割点上提取。通过传递{allChunks: true}它提取所有块中的所有 css 并将其放入一个 css 文件中。

但这并不能解决您的问题。

为此,您可以尝试 extract-css-chunks-webpack-plugin使用提取文本插件专门为此用例构建。

关于webpack - 为每个 webpack block 提取一个 css 文件(require.ensure),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42661898/

相关文章:

reactjs - 如何向 React 项目添加样式

webpack - 不能在 '[name].[chunkhash].js'中将[chunkhash]或[contenthash]用于 block (改为使用[hash])

django - 使用Webpack_Loader错误将Django Dockering

webpack - 无法读取未定义的extract-text-webpack-plugin的属性 'query'

javascript - React.js 上 img 的正确路径

编译后修改文件的webpack插件

angular - 强制编译的 CSS 与 Angular 和 Webpack 内联

javascript - web pack 4 中的非 JavaScript 资源是否需要入口点?

javascript - 从 webpack build 中提取一个 javascript 文件

sass - WebPack + SASS : How to generate relative image path?