Skip to content

Commit aadab68

Browse files
filipesilvaBrocco
authored andcommitted
fix(@angular-devkit/build-optimizer): fix es5 detection for Angular 5 packages
1 parent b19b804 commit aadab68

File tree

2 files changed

+31
-22
lines changed

2 files changed

+31
-22
lines changed

packages/angular_devkit/build_optimizer/src/build-optimizer/build-optimizer.ts

+17-17
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,29 @@ import { getWrapEnumsTransformer, testWrapEnums } from '../transforms/wrap-enums
1616

1717

1818
const whitelistedAngularModules = [
19-
/[\\\/]node_modules[\\\/]@angular[\\\/]animations[\\\/]/,
20-
/[\\\/]node_modules[\\\/]@angular[\\\/]common[\\\/]/,
21-
/[\\\/]node_modules[\\\/]@angular[\\\/]compiler[\\\/]/,
22-
/[\\\/]node_modules[\\\/]@angular[\\\/]core[\\\/]/,
23-
/[\\\/]node_modules[\\\/]@angular[\\\/]forms[\\\/]/,
24-
/[\\\/]node_modules[\\\/]@angular[\\\/]http[\\\/]/,
25-
/[\\\/]node_modules[\\\/]@angular[\\\/]platform-browser-dynamic[\\\/]/,
26-
/[\\\/]node_modules[\\\/]@angular[\\\/]platform-browser[\\\/]/,
27-
/[\\\/]node_modules[\\\/]@angular[\\\/]platform-webworker-dynamic[\\\/]/,
28-
/[\\\/]node_modules[\\\/]@angular[\\\/]platform-webworker[\\\/]/,
29-
/[\\\/]node_modules[\\\/]@angular[\\\/]router[\\\/]/,
30-
/[\\\/]node_modules[\\\/]@angular[\\\/]upgrade[\\\/]/,
31-
/[\\\/]node_modules[\\\/]@angular[\\\/]material[\\\/]/,
32-
/[\\\/]node_modules[\\\/]@angular[\\\/]cdk[\\\/]/,
19+
/[\\/]node_modules[\\/]@angular[\\/]animations[\\/]/,
20+
/[\\/]node_modules[\\/]@angular[\\/]common[\\/]/,
21+
/[\\/]node_modules[\\/]@angular[\\/]compiler[\\/]/,
22+
/[\\/]node_modules[\\/]@angular[\\/]core[\\/]/,
23+
/[\\/]node_modules[\\/]@angular[\\/]forms[\\/]/,
24+
/[\\/]node_modules[\\/]@angular[\\/]http[\\/]/,
25+
/[\\/]node_modules[\\/]@angular[\\/]platform-browser-dynamic[\\/]/,
26+
/[\\/]node_modules[\\/]@angular[\\/]platform-browser[\\/]/,
27+
/[\\/]node_modules[\\/]@angular[\\/]platform-webworker-dynamic[\\/]/,
28+
/[\\/]node_modules[\\/]@angular[\\/]platform-webworker[\\/]/,
29+
/[\\/]node_modules[\\/]@angular[\\/]router[\\/]/,
30+
/[\\/]node_modules[\\/]@angular[\\/]upgrade[\\/]/,
31+
/[\\/]node_modules[\\/]@angular[\\/]material[\\/]/,
32+
/[\\/]node_modules[\\/]@angular[\\/]cdk[\\/]/,
3333
];
3434

3535
const es5AngularModules = [
3636
// Angular 4 packaging format has .es5.js as the extension.
37-
/.es5.js$/, // Angular 4
37+
/\.es5\.js$/, // Angular 4
3838
// Angular 5 has esm5 folders.
39-
/[\\\/]node_modules[\\\/]@angular[\\\/][^\\/][\\\/]esm5[\\\/]/,
39+
/[\\/]node_modules[\\/]@angular[\\/][^\\/]+[\\/]esm5[\\/]/,
4040
// All Angular versions have UMD with es5.
41-
/.umd.js$/,
41+
/\.umd\.js$/,
4242
];
4343

4444
export interface BuildOptimizerOptions {

packages/angular_devkit/build_optimizer/src/build-optimizer/build-optimizer_spec.ts

+14-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe('build-optimizer', () => {
1717
const decorators = 'Clazz.decorators = [ { type: Injectable } ];';
1818

1919
describe('basic functionality', () => {
20-
it('applies class-fold, scrub-file and prefix-functions', () => {
20+
it('applies class-fold, scrub-file and prefix-functions to whitelisted es5 modules', () => {
2121
const input = tags.stripIndent`
2222
${imports}
2323
var __extends = (this && this.__extends) || function (d, b) {
@@ -50,10 +50,19 @@ describe('build-optimizer', () => {
5050
var Clazz = /*@__PURE__*/ (function () { function Clazz() { } ${staticProperty} return Clazz; }());
5151
`;
5252

53-
const inputFilePath = '/node_modules/@angular/core/@angular/core.es5.js';
54-
const boOutput = buildOptimizer({ content: input, inputFilePath });
55-
expect(tags.oneLine`${boOutput.content}`).toEqual(output);
56-
expect(boOutput.emitSkipped).toEqual(false);
53+
// Check Angular 4/5 and unix/windows paths.
54+
const inputPaths = [
55+
'/node_modules/@angular/core/@angular/core.es5.js',
56+
'/node_modules/@angular/core/esm5/core.js',
57+
'\\node_modules\\@angular\\core\\@angular\\core.es5.js',
58+
'\\node_modules\\@angular\\core\\esm5\\core.js',
59+
];
60+
61+
inputPaths.forEach((inputFilePath) => {
62+
const boOutput = buildOptimizer({ content: input, inputFilePath });
63+
expect(tags.oneLine`${boOutput.content}`).toEqual(output);
64+
expect(boOutput.emitSkipped).toEqual(false);
65+
});
5766
});
5867

5968
it('doesn\'t process files without decorators/ctorParameters/outside Angular', () => {

0 commit comments

Comments
 (0)