Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(build): hashes in prod builds now changes when ID change.
Browse files Browse the repository at this point in the history
hansl committed Dec 17, 2016

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent acd4589 commit f3f535f
Showing 8 changed files with 60 additions and 7 deletions.
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -122,7 +122,6 @@
"walk-sync": "^0.2.6",
"webpack": "2.1.0-beta.25",
"webpack-dev-server": "2.1.0-beta.9",
"webpack-md5-hash": "0.0.5",
"webpack-merge": "^0.14.0",
"webpack-sources": "^0.1.3",
"yam": "0.0.18"
1 change: 1 addition & 0 deletions packages/@ngtools/webpack/src/plugin.ts
Original file line number Diff line number Diff line change
@@ -310,6 +310,7 @@ export class AotPlugin implements Tapable {
Object.keys(allLazyRoutes)
.forEach(k => {
const lazyRoute = allLazyRoutes[k];
k = k.split('#')[0];
if (this.skipCodeGeneration) {
this._lazyRoutes[k] = lazyRoute;
} else {
2 changes: 1 addition & 1 deletion packages/angular-cli/blueprints/ng2/files/package.json
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@
"@angular/http": "~2.3.1",
"@angular/platform-browser": "~2.3.1",
"@angular/platform-browser-dynamic": "~2.3.1",
"@angular/router": "3.2.3",
"@angular/router": "~3.3.1",
"core-js": "^2.4.1",
"rxjs": "5.0.0-rc.4",
"ts-helpers": "^1.1.1",
2 changes: 0 additions & 2 deletions packages/angular-cli/models/webpack-build-production.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as path from 'path';
import * as webpack from 'webpack';
const WebpackMd5Hash = require('webpack-md5-hash');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
import {CompressionPlugin} from '../lib/webpack/compression-plugin';
const autoprefixer = require('autoprefixer');
@@ -30,7 +29,6 @@ export const getWebpackProdConfigPartial = function(projectRoot: string,
},
plugins: [
new ExtractTextPlugin('[name].[chunkhash].bundle.css'),
new WebpackMd5Hash(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
1 change: 0 additions & 1 deletion packages/angular-cli/package.json
Original file line number Diff line number Diff line change
@@ -101,7 +101,6 @@
"walk-sync": "^0.2.6",
"webpack": "2.1.0-beta.25",
"webpack-dev-server": "2.1.0-beta.9",
"webpack-md5-hash": "0.0.5",
"webpack-merge": "^0.14.0",
"webpack-sources": "^0.1.3",
"yam": "0.0.18"
2 changes: 1 addition & 1 deletion tests/e2e/assets/webpack/test-app-weird/package.json
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@
"@angular/platform-browser": "~2.3.1",
"@angular/platform-browser-dynamic": "~2.3.1",
"@angular/platform-server": "~2.3.1",
"@angular/router": "~3.2.3",
"@angular/router": "~3.3.1",
"@ngtools/webpack": "0.0.0",
"core-js": "^2.4.1",
"rxjs": "5.0.0-rc.4",
2 changes: 1 addition & 1 deletion tests/e2e/assets/webpack/test-app/package.json
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@
"@angular/platform-browser": "~2.3.1",
"@angular/platform-browser-dynamic": "~2.3.1",
"@angular/platform-server": "~2.3.1",
"@angular/router": "~3.2.3",
"@angular/router": "~3.3.1",
"@ngtools/webpack": "0.0.0",
"core-js": "^2.4.1",
"rxjs": "5.0.0-rc.4",
56 changes: 56 additions & 0 deletions tests/e2e/tests/build/chunk-hash.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import {oneLine} from 'common-tags';
import * as fs from 'fs';

import {ng} from '../../utils/process';
import {writeFile} from '../../utils/fs';
import {addImportToModule} from '../../utils/ast';


export default function() {
const oldHashes: {[module: string]: string} = {};
const newHashes: {[module: string]: string} = {};
// First, collect the hashes.
return Promise.resolve()
.then(() => ng('generate', 'module', 'lazy', '--routing'))
.then(() => addImportToModule('src/app/app.module.ts', oneLine`
RouterModule.forRoot([{ path: "lazy", loadChildren: "./lazy/lazy.module#LazyModule" }])
`, '@angular/router'))
.then(() => ng('build', '--prod'))
.then(() => {
fs.readdirSync('./dist')
.forEach(name => {
if (!name.match(/(main|inline|style|\d+)\.[a-z0-9]+\.bundle\.(js|css)/)) {
return;
}

const [module, hash] = name.split('.');
oldHashes[module] = hash;
});
})
.then(() => writeFile('src/app/app.component.css', 'h1 { margin: 5px; }'))
.then(() => writeFile('src/styles.css', 'body { background: red; }'))
.then(() => ng('build', '--prod'))
.then(() => {
fs.readdirSync('./dist')
.forEach(name => {
if (!name.match(/(main|inline|style|\d+)\.[a-z0-9]+\.bundle\.(js|css)/)) {
return;
}

const [module, hash] = name.split('.');
newHashes[module] = hash;
});
})
.then(() => {
console.log(' Validating hashes...');
console.log(` Old hashes: ${JSON.stringify(oldHashes)}`);
console.log(` New hashes: ${JSON.stringify(newHashes)}`);

Object.keys(oldHashes)
.forEach(module => {
if (oldHashes[module] == newHashes[module]) {
throw new Error(`Module "${module}" did not change hash (${oldHashes[module]})...`);
}
});
});
}

0 comments on commit f3f535f

Please sign in to comment.