首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用多入口点的Webpack CommonsChunkPlugin?

如何正确使用多入口点的Webpack CommonsChunkPlugin?
EN

Stack Overflow用户
提问于 2016-08-17 04:32:58
回答 1查看 411关注 0票数 1

我在为我的显式供应商块维护稳定的模块I时遇到了问题。下面是我的设置(模仿SurviveJS):

代码语言:javascript
复制
const gitrev = require('git-rev-sync');
const path = require('path');
const webpack = require('webpack');
const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin');

const packageJson = require('./package.json');

const gulpPaths = require('./gulp/lib/gulp_paths');

module.exports = {
  context: __dirname,
  entry: {
    vendor: Object.keys(packageJson.dependencies),
    web: path.join(
      __dirname,
      gulpPaths.SCRIPT_SOURCE_DIR,
      gulpPaths.SCRIPT_BUNDLE_SOURCE_FILE
    ),
//    server: path.join(
//      __dirname,
//      gulpPaths.SCRIPT_SOURCE_DIR,
//      gulpPaths.SCRIPT_SERVER_SIDE_SOURCE_FILE
//    ),
  },
  output: {
    path: path.join(__dirname, gulpPaths.SCRIPT_OUTPUT_DIR),
    filename: '[name]_bundle.js',
  },
  plugins: [
    new webpack.DefinePlugin({
      __DEV__: false,
      __TEST__: false,
      __COMMIT__: JSON.stringify(gitrev.long()),
      'process.env': {
        NODE_ENV: JSON.stringify('production'),
      },
    }),
    new webpack.optimize.CommonsChunkPlugin({
      names: ['vendor', 'manifest'],
      minChunks: Infinity,
    }),
    new webpack.optimize.UglifyJsPlugin(),
  ],
  resolve: {
    extensions: ['', '.js', '.jsx'],
  },
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        loaders: ['babel'],
        exclude: /node_modules/,
      },
      { // Turn off AMD module loading on eventemitter2
        test: /eventemitter2/,
        loader: 'imports?define=>false',
      }
    ]
  },
};

它工作得很好;我可以在我的存储库历史记录中来回切换,只有当node_modules中的供应商库实际发生变化时,供应商块才会发生变化。但是,一旦我取消对附加入口点的注释,一切都会发生变化:供应商块会发生变化,而不会对供应商库进行任何更改。如果我手动将几个库列入白名单,这会有所帮助,但并不能完全消除问题。看起来它也以同样的方式与DedupePlugin和OccurenceOrderPlugin发生冲突。

我还尝试使用了Webpack文档(recordsPath和ChunkManifestPlugin,不太走运)中概述的方法。

我不会对此有什么意见,因为服务器入口点无论如何都是服务器端呈现的一个失败的实验,可能应该被删除;但是,很快我就会有多个入口点,以便更好地调整页面加载时间,这可能会变得有趣。

EN

回答 1

Stack Overflow用户

发布于 2016-08-18 17:01:32

根据Juho Vepäläinen的建议,对我来说最好的选择是使用NamedModulesPlugin。需要指出的是,HashModuleIds插件也值得一看,但它只在Webpack 2中可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38983978

复制
相关文章

相似问题

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