feat(compiler-cli): export tooling definitions (#29929)
PR Close #29929
This commit is contained in:
parent
e5905bb035
commit
e1f51eaa55
|
@ -0,0 +1 @@
|
||||||
|
core.min.js
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"name": "terser",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"test": "node test.js"
|
||||||
|
},
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@angular/core": "file:../../dist/packages-dist/core",
|
||||||
|
"@angular/compiler": "file:../../dist/packages-dist/compiler",
|
||||||
|
"@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli",
|
||||||
|
"rxjs": "file:../../node_modules/rxjs",
|
||||||
|
"terser": "3.17.0",
|
||||||
|
"zone.js": "file:../../node_modules/zone.js"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
const readFileSync = require('fs').readFileSync;
|
||||||
|
const writeFileSync = require('fs').writeFileSync;
|
||||||
|
const resolve = require('path').resolve;
|
||||||
|
const Terser = require('terser');
|
||||||
|
const GLOBAL_DEFS_FOR_TERSER = require('@angular/compiler-cli').GLOBAL_DEFS_FOR_TERSER;
|
||||||
|
|
||||||
|
const outputPath = resolve(__dirname, './core.min.js');
|
||||||
|
const pathToCoreFesm5 = resolve(__dirname, './node_modules/@angular/core/fesm5/core.js');
|
||||||
|
const coreFesm5Content = readFileSync(pathToCoreFesm5, 'utf8');
|
||||||
|
// Ensure that Terser global_defs exported by compiler-cli work.
|
||||||
|
const terserOpts = {
|
||||||
|
compress: {
|
||||||
|
module: true,
|
||||||
|
global_defs: GLOBAL_DEFS_FOR_TERSER
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const result = Terser.minify(coreFesm5Content, terserOpts);
|
||||||
|
writeFileSync(outputPath, result.code);
|
||||||
|
|
||||||
|
for (const def of Object.keys(GLOBAL_DEFS_FOR_TERSER)) {
|
||||||
|
if (result.code.includes(def)) {
|
||||||
|
throw `'${def}' should have been removed from core bundle, but was still there.\n` +
|
||||||
|
`See output at ${outputPath}.`;
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ export * from './src/transformers/api';
|
||||||
export * from './src/transformers/entry_points';
|
export * from './src/transformers/entry_points';
|
||||||
|
|
||||||
export * from './src/perform_compile';
|
export * from './src/perform_compile';
|
||||||
|
export * from './src/tooling';
|
||||||
|
|
||||||
// TODO(tbosch): remove this once cli 1.5 is fully released,
|
// TODO(tbosch): remove this once cli 1.5 is fully released,
|
||||||
// and usages in G3 are changed to `CompilerOptions`.
|
// and usages in G3 are changed to `CompilerOptions`.
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @module
|
||||||
|
* @description
|
||||||
|
* Tooling support helpers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Known values for global variables in `@angular/core` that Terser should set using
|
||||||
|
* https://github.com/terser-js/terser#conditional-compilation
|
||||||
|
*/
|
||||||
|
export const GLOBAL_DEFS_FOR_TERSER = {
|
||||||
|
ngDevMode: false,
|
||||||
|
ngI18nClosureMode: false,
|
||||||
|
};
|
|
@ -83,8 +83,7 @@ export function ngDevModeResetPerfCounters(): NgDevModePerfCounters {
|
||||||
* set `ngDevMode == false` we should be helping the developer by providing
|
* set `ngDevMode == false` we should be helping the developer by providing
|
||||||
* as much early warning and errors as possible.
|
* as much early warning and errors as possible.
|
||||||
*
|
*
|
||||||
* NOTE: changes to the `ngDevMode` name must be synced with the CLI and
|
* NOTE: changes to the `ngDevMode` name must be synced with `compiler-cli/src/tooling.ts`.
|
||||||
* possibly other third party tooling. Check with them before altering it.
|
|
||||||
*/
|
*/
|
||||||
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
||||||
ngDevModeResetPerfCounters();
|
ngDevModeResetPerfCounters();
|
||||||
|
|
|
@ -13,8 +13,7 @@ declare global {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NOTE: changes to the `ngI18nClosureMode` name must be synced with the CLI and
|
* NOTE: changes to the `ngI18nClosureMode` name must be synced with `compiler-cli/src/tooling.ts`.
|
||||||
* possibly other third party tooling. Check with them before altering it.
|
|
||||||
*/
|
*/
|
||||||
if (typeof ngI18nClosureMode === 'undefined') {
|
if (typeof ngI18nClosureMode === 'undefined') {
|
||||||
// Make sure to refer to ngI18nClosureMode as ['ngI18nClosureMode'] for closure.
|
// Make sure to refer to ngI18nClosureMode as ['ngI18nClosureMode'] for closure.
|
||||||
|
|
Loading…
Reference in New Issue