25 lines
		
	
	
		
			964 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			964 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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}.`;
 | |
|   }
 | |
| } |