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!'); | ||
|  | } |