Commit 6d1548f8 authored by Winnie Hellmann's avatar Winnie Hellmann

Fix Webpack config for ConcatenatedModule

parent b1e1990e
'use strict'; 'use strict';
var crypto = require('crypto');
var fs = require('fs'); var fs = require('fs');
var path = require('path'); var path = require('path');
var webpack = require('webpack'); var webpack = require('webpack');
...@@ -179,15 +180,34 @@ var config = { ...@@ -179,15 +180,34 @@ var config = {
if (chunk.name) { if (chunk.name) {
return chunk.name; return chunk.name;
} }
return chunk.mapModules((m) => {
const moduleNames = [];
function collectModuleNames(m) {
// handle ConcatenatedModule which does not have resource nor context set
if (m.modules) {
m.modules.forEach(collectModuleNames);
return;
}
const pagesBase = path.join(ROOT_PATH, 'app/assets/javascripts/pages'); const pagesBase = path.join(ROOT_PATH, 'app/assets/javascripts/pages');
if (m.resource.indexOf(pagesBase) === 0) { if (m.resource.indexOf(pagesBase) === 0) {
return path.relative(pagesBase, m.resource) moduleNames.push(path.relative(pagesBase, m.resource)
.replace(/\/index\.[a-z]+$/, '') .replace(/\/index\.[a-z]+$/, '')
.replace(/\//g, '__'); .replace(/\//g, '__'));
} else {
moduleNames.push(path.relative(m.context, m.resource));
} }
return path.relative(m.context, m.resource); }
}).join('_');
chunk.forEachModule(collectModuleNames);
const hash = crypto.createHash('sha256')
.update(moduleNames.join('_'))
.digest('hex');
return `${moduleNames[0]}-${hash.substr(0, 6)}`;
}), }),
// create cacheable common library bundle for all vue chunks // create cacheable common library bundle for all vue chunks
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment