47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.3 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 TS_CONFIG_PATH = join(ROOT_DIR, 'tsconfig.json');
							 | 
						||
| 
								 | 
							
								const NG_COMPILER_OPTS = {
							 | 
						||
| 
								 | 
							
								  angularCompilerOptions: {
							 | 
						||
| 
								 | 
							
								    // Related Jira issue: FW-737
							 | 
						||
| 
								 | 
							
								    allowEmptyCodegenFiles: true,
							 | 
						||
| 
								 | 
							
								    enableIvy: 'ngtsc',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Run
							 | 
						||
| 
								 | 
							
								_main(process.argv.slice(2));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Functions - Definitions
							 | 
						||
| 
								 | 
							
								function _main(buildArgs) {
							 | 
						||
| 
								 | 
							
								  console.log('\nModifying `tsconfig.json`...');
							 | 
						||
| 
								 | 
							
								  const oldTsConfigStr = readFileSync(TS_CONFIG_PATH, 'utf8');
							 | 
						||
| 
								 | 
							
								  const oldTsConfigObj = parse(oldTsConfigStr);
							 | 
						||
| 
								 | 
							
								  const newTsConfigObj = extend(true, oldTsConfigObj, NG_COMPILER_OPTS);
							 | 
						||
| 
								 | 
							
								  const newTsConfigStr = JSON.stringify(newTsConfigObj, null, 2);
							 | 
						||
| 
								 | 
							
								  writeFileSync(TS_CONFIG_PATH, newTsConfigStr);
							 | 
						||
| 
								 | 
							
								  console.log(newTsConfigStr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const buildArgsStr = buildArgs.join(' ');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.log(`\nBuilding${buildArgsStr && ` with args \`${buildArgsStr}\``}...`);
							 | 
						||
| 
								 | 
							
								    exec(`yarn ~~build ${buildArgsStr}`, {cwd: ROOT_DIR});
							 | 
						||
| 
								 | 
							
								  } finally {
							 | 
						||
| 
								 | 
							
								    console.log('\nRestoring `tsconfig.json`...');
							 | 
						||
| 
								 | 
							
								    writeFileSync(TS_CONFIG_PATH, oldTsConfigStr);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  console.log('\nDone!');
							 | 
						||
| 
								 | 
							
								}
							 |