Previously, when switching to Ivy mode (e.g. to run tests on CI), we had to add `allowEmptyCodegenFiles: true` to the `angularCompilerOptions` in `tsconfig.app.json`. This isn't necessary any more (potentially since we switched to dynamic imports for loading lazy modules in #30704), so this commit removes it from the `switch-to-ivy.js` script. PR Close #30911
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| #!/usr/bin/env node
 | |
| 
 | |
| // Imports
 | |
| const {extend, parse} = require('cjson');
 | |
| const {readFileSync, writeFileSync} = require('fs');
 | |
| const {join, resolve} = require('path');
 | |
| const {exec, set} = require('shelljs');
 | |
| 
 | |
| set('-e');
 | |
| 
 | |
| // Constants
 | |
| const ROOT_DIR = resolve(__dirname, '..');
 | |
| const NG_JSON = join(ROOT_DIR, 'angular.json');
 | |
| const NG_COMPILER_OPTS = {
 | |
|   angularCompilerOptions: {
 | |
|     enableIvy: true,
 | |
|   },
 | |
| };
 | |
| 
 | |
| // Run
 | |
| _main(process.argv.slice(2));
 | |
| 
 | |
| // Functions - Definitions
 | |
| function _main() {
 | |
|   // Detect path to `tsconfig.app.json`.
 | |
|   const ngConfig = parse(readFileSync(NG_JSON, 'utf8'));
 | |
|   const tsConfigPath = join(ROOT_DIR, ngConfig.projects.site.architect.build.options.tsConfig);
 | |
| 
 | |
|   // Enable Ivy in TS config.
 | |
|   console.log(`\nModifying \`${tsConfigPath}\`...`);
 | |
|   const oldTsConfigStr = readFileSync(tsConfigPath, 'utf8');
 | |
|   const oldTsConfigObj = parse(oldTsConfigStr);
 | |
|   const newTsConfigObj = extend(true, oldTsConfigObj, NG_COMPILER_OPTS);
 | |
|   const newTsConfigStr = `${JSON.stringify(newTsConfigObj, null, 2)}\n`;
 | |
|   console.log(`\nNew config: ${newTsConfigStr}`);
 | |
|   writeFileSync(tsConfigPath, newTsConfigStr);
 | |
| 
 | |
|   // Run ngcc.
 | |
|   const ngccArgs = '--loglevel debug --properties es2015 module';
 | |
|   console.log(`\nRunning ngcc (with args: ${ngccArgs})...`);
 | |
|   exec(`yarn ivy-ngcc ${ngccArgs}`);
 | |
| 
 | |
|   // Done.
 | |
|   console.log('\nReady to build with Ivy!');
 | |
|   console.log('(To switch back to ViewEngine (with packages from npm), undo the changes in ' +
 | |
|               `\`${tsConfigPath}\` and run \`yarn aio-use-npm && yarn example-use-npm\`.)`);
 | |
| }
 |