javascript - Webpack 条目的不同名称

标签 javascript webpack frontend

如何为不同的条目输出指定不同的文件名

例如:

module.exports = {
  context: path.resolve(__dirname, 'assets'),
  entry: {
    vendor: ['react', 'react-dom', 'lodash', 'redux'],
    app: './src/app.js'
  }
  output: {
    path: path.resolve(__dirname, (isDevelopment) ? 'demo' : 'build'),
    filename: (isDevelopment) ? '[name].js' : '[name][chunkhash:12].js'
  }
}

接收这样的输出

build
-- index.html
-- app.2394035ufas0ue34.js
-- vendor.js

因此浏览器将缓存 vendor.js 以及所有库。因为我不打算很快且频繁地迁移到任何主要的新版本。 并且仍然能够在每次需要更新时破坏 app.js 的缓存。

是否有某种选项可以将输出设置为

output: {
  app: {
    ...
  },
  vendor: {
    ...
  },
}

最佳答案

这是工作代码:

  entry: {
    './build/app': './src/app.js',
    './build/vendor': VENDOR_LIBS // or path to your vendor.js
  },
  output: {
    path: __dirname,
    filename: '[name].[chunkhash].js'
  },

将此代码添加到您的 webpack plugins 数组中,作为数组的最后一个元素。

plugins: [
 ... // place our new plugin here
]

function() {
  this.plugin("done", function(stats) {
    const buildDir = __dirname + '/build/';
    const fs = require('fs');
    var vendorTempFileName = '';

    new Promise(function(resolve, reject) {

      fs.readdir(buildDir, (err, files) => {
        files.forEach(file => {

        if (file.substr(0,6) === 'vendor') {
          resolve(file);
        }

        });
      });
    }).then(function(file) {

      fs.rename( buildDir + file, buildDir + 'vendor.js', function(err) {
        if ( err ) console.log('ERROR: ' + err);
      });

    });

  });
}

输出应如下所示: enter image description here

由于浏览器缓存的原因,让文件不带 chunkhashes 被认为是不好的做法。

关于javascript - Webpack 条目的不同名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43182092/

相关文章:

javascript - 如何在运行测试套件后退出 webpack-dev-server 执行

javascript - 如何测试 jQuery 页面上是否存在具有特定 ID 的元素?

javascript - 使 HTML 在 Iframe 中可见

javascript - 不能创建很多模态

javascript - 像其他 Assets 一样通过 CDN URL 从动态导入中加载 block

javascript - AngularJS,ng-repeat 不重复

javascript - 当设置为焦点时,如何使搜索框在缩放模式下在网页上可见

javascript - 切换到 Preact 时我的 React 库中的 JSX 出错

javascript - WebPack:访问客户端代码中的 Node 环境变量

javascript - CKEditor:分页显示指示器