@@ -3,6 +3,8 @@ import { BuildContext, TaskInfo } from './interfaces';
3
3
import { join , resolve } from 'path' ;
4
4
import { objectAssign } from './helpers' ;
5
5
import { FileCache } from './file-cache' ;
6
+ import { SOURCE_MAP_TYPE_EXPENSIVE } from './constants' ;
7
+
6
8
/**
7
9
* Create a context object which is used by all the build tasks.
8
10
* Filling the config data uses the following hierarchy, which will
@@ -23,6 +25,36 @@ export function generateContext(context?: BuildContext): BuildContext {
23
25
context . fileCache = new FileCache ( ) ;
24
26
}
25
27
28
+ context . isProd = [
29
+ context . isProd ,
30
+ hasArg ( '--prod' )
31
+ ] . find ( val => typeof val === 'boolean' ) ;
32
+
33
+ // If context is prod then the following flags must be set to true
34
+ context . runAot = [
35
+ context . runAot ,
36
+ context . isProd || hasArg ( '--aot' ) ,
37
+ ] . find ( val => typeof val === 'boolean' ) ;
38
+
39
+ context . runMinifyJs = [
40
+ context . runMinifyJs ,
41
+ context . isProd || hasArg ( '--minifyJs' )
42
+ ] . find ( val => typeof val === 'boolean' ) ;
43
+
44
+ context . runMinifyCss = [
45
+ context . runMinifyCss ,
46
+ context . isProd || hasArg ( '--minifyCss' )
47
+ ] . find ( val => typeof val === 'boolean' ) ;
48
+
49
+ context . optimizeJs = [
50
+ context . optimizeJs ,
51
+ context . isProd || hasArg ( '--optimizeJs' )
52
+ ] . find ( val => typeof val === 'boolean' ) ;
53
+
54
+ if ( typeof context . isWatch !== 'boolean' ) {
55
+ context . isWatch = hasArg ( '--watch' ) ;
56
+ }
57
+
26
58
context . rootDir = resolve ( context . rootDir || getConfigValue ( context , '--rootDir' , null , ENV_VAR_ROOT_DIR , ENV_VAR_ROOT_DIR . toLowerCase ( ) , processCwd ) ) ;
27
59
setProcessEnvVar ( ENV_VAR_ROOT_DIR , context . rootDir ) ;
28
60
@@ -42,53 +74,47 @@ export function generateContext(context?: BuildContext): BuildContext {
42
74
43
75
setProcessEnvVar ( ENV_VAR_APP_SCRIPTS_DIR , join ( __dirname , '..' , '..' ) ) ;
44
76
45
- const sourceMapValue = getConfigValue ( context , '--sourceMap ' , null , ENV_VAR_SOURCE_MAP , ENV_VAR_SOURCE_MAP . toLowerCase ( ) , 'eval ') ;
46
- setProcessEnvVar ( ENV_VAR_SOURCE_MAP , sourceMapValue ) ;
77
+ const generateSourceMap = getConfigValue ( context , '--generateSourceMap ' , null , ENV_VAR_GENERATE_SOURCE_MAP , ENV_VAR_GENERATE_SOURCE_MAP . toLowerCase ( ) , context . isProd || context . runMinifyJs ? null : 'true ') ;
78
+ setProcessEnvVar ( ENV_VAR_GENERATE_SOURCE_MAP , generateSourceMap ) ;
47
79
48
- const tsConfigPathValue = getConfigValue ( context , '--tsconfigPath ' , null , ENV_TS_CONFIG_PATH , ENV_TS_CONFIG_PATH . toLowerCase ( ) , join ( context . rootDir , 'tsconfig.json' ) ) ;
49
- setProcessEnvVar ( ENV_TS_CONFIG_PATH , tsConfigPathValue ) ;
80
+ const sourceMapTypeValue = getConfigValue ( context , '--sourceMapType ' , null , ENV_VAR_SOURCE_MAP_TYPE , ENV_VAR_SOURCE_MAP_TYPE . toLowerCase ( ) , SOURCE_MAP_TYPE_EXPENSIVE ) ;
81
+ setProcessEnvVar ( ENV_VAR_SOURCE_MAP_TYPE , sourceMapTypeValue ) ;
50
82
51
- const appEntryPointPathValue = getConfigValue ( context , '--appEntryPointPath ' , null , ENV_APP_ENTRY_POINT_PATH , ENV_APP_ENTRY_POINT_PATH . toLowerCase ( ) , join ( context . srcDir , 'app' , 'main.ts ') ) ;
52
- setProcessEnvVar ( ENV_APP_ENTRY_POINT_PATH , appEntryPointPathValue ) ;
83
+ const tsConfigPathValue = getConfigValue ( context , '--tsconfig ' , null , ENV_TS_CONFIG , ENV_TS_CONFIG . toLowerCase ( ) , join ( context . rootDir , 'tsconfig.json ' ) ) ;
84
+ setProcessEnvVar ( ENV_TS_CONFIG , tsConfigPathValue ) ;
53
85
54
- const pathToGlobUtils = getConfigValue ( context , '--pathToGlobUtils' , null , ENV_PATH_TO_GLOB_UTILS , ENV_PATH_TO_GLOB_UTILS . toLowerCase ( ) , join ( getProcessEnvVar ( ENV_VAR_APP_SCRIPTS_DIR ) , 'dist' , 'util' , 'glob-util.js' ) ) ;
55
- setProcessEnvVar ( ENV_PATH_TO_GLOB_UTILS , pathToGlobUtils ) ;
86
+ const appEntryPointPathValue = getConfigValue ( context , '--appEntryPoint' , null , ENV_APP_ENTRY_POINT , ENV_APP_ENTRY_POINT . toLowerCase ( ) , join ( context . srcDir , 'app' , 'main.ts' ) ) ;
87
+ setProcessEnvVar ( ENV_APP_ENTRY_POINT , appEntryPointPathValue ) ;
88
+
89
+ const pathToGlobUtils = getConfigValue ( context , '--pathToGlobUtils' , null , ENV_GLOB_UTIL , ENV_GLOB_UTIL . toLowerCase ( ) , join ( getProcessEnvVar ( ENV_VAR_APP_SCRIPTS_DIR ) , 'dist' , 'util' , 'glob-util.js' ) ) ;
90
+ setProcessEnvVar ( ENV_GLOB_UTIL , pathToGlobUtils ) ;
56
91
57
92
const cleanBeforeCopy = getConfigValue ( context , '--cleanBeforeCopy' , null , ENV_CLEAN_BEFORE_COPY , ENV_CLEAN_BEFORE_COPY . toLowerCase ( ) , null ) ;
58
93
setProcessEnvVar ( ENV_CLEAN_BEFORE_COPY , cleanBeforeCopy ) ;
59
94
60
- if ( ! isValidBundler ( context . bundler ) ) {
61
- context . bundler = bundlerStrategy ( context ) ;
62
- }
95
+ const pathToClosureJar = getConfigValue ( context , '--pathToClosureJar' , null , ENV_CLOSURE_JAR , ENV_CLOSURE_JAR . toLowerCase ( ) , join ( getProcessEnvVar ( ENV_VAR_APP_SCRIPTS_DIR ) , 'bin' , 'closure-compiler.jar' ) ) ;
96
+ setProcessEnvVar ( ENV_CLOSURE_JAR , pathToClosureJar ) ;
63
97
64
- context . isProd = [
65
- context . isProd ,
66
- hasArg ( '--prod' )
67
- ] . find ( val => typeof val === 'boolean' ) ;
98
+ const outputJsFileName = getConfigValue ( context , '--outputJsFileName' , null , ENV_OUTPUT_JS_FILE_NAME , ENV_OUTPUT_JS_FILE_NAME . toLowerCase ( ) , 'main.js' ) ;
99
+ setProcessEnvVar ( ENV_OUTPUT_JS_FILE_NAME , outputJsFileName ) ;
68
100
69
- // If context is prod then the following flags must be set to true
70
- context . runAot = [
71
- context . runAot ,
72
- context . isProd || hasArg ( '--aot' ) ,
73
- ] . find ( val => typeof val === 'boolean' ) ;
101
+ const outputJsMapFileName = getConfigValue ( context , '--outputJsMapFileName' , null , ENV_OUTPUT_JS_MAP_FILE_NAME , ENV_OUTPUT_JS_MAP_FILE_NAME . toLowerCase ( ) , 'main.js.map' ) ;
102
+ setProcessEnvVar ( ENV_OUTPUT_JS_MAP_FILE_NAME , outputJsMapFileName ) ;
74
103
75
- context . runMinifyJs = [
76
- context . runMinifyJs ,
77
- context . isProd || hasArg ( '--minifyJs' )
78
- ] . find ( val => typeof val === 'boolean' ) ;
104
+ const outputCssFileName = getConfigValue ( context , '--outputCssFileName' , null , ENV_OUTPUT_CSS_FILE_NAME , ENV_OUTPUT_CSS_FILE_NAME . toLowerCase ( ) , 'main.css' ) ;
105
+ setProcessEnvVar ( ENV_OUTPUT_CSS_FILE_NAME , outputCssFileName ) ;
79
106
80
- context . runMinifyCss = [
81
- context . runMinifyCss ,
82
- context . isProd || hasArg ( '--minifyCss' )
83
- ] . find ( val => typeof val === 'boolean' ) ;
107
+ const outputCssMapFileName = getConfigValue ( context , '--outputCssMapFileName' , null , ENV_OUTPUT_CSS_MAP_FILE_NAME , ENV_OUTPUT_CSS_MAP_FILE_NAME . toLowerCase ( ) , 'main.css.map' ) ;
108
+ setProcessEnvVar ( ENV_OUTPUT_CSS_MAP_FILE_NAME , outputCssMapFileName ) ;
84
109
85
- context . optimizeJs = [
86
- context . optimizeJs ,
87
- context . isProd || hasArg ( '--optimizeJs' )
88
- ] . find ( val => typeof val === 'boolean' ) ;
110
+ const webpackFactoryPath = getConfigValue ( context , '--webpackFactoryPath' , null , ENV_WEBPACK_FACTORY , ENV_WEBPACK_FACTORY . toLowerCase ( ) , join ( getProcessEnvVar ( ENV_VAR_APP_SCRIPTS_DIR ) , 'dist' , 'webpack' , 'ionic-webpack-factory.js' ) ) ;
111
+ setProcessEnvVar ( ENV_WEBPACK_FACTORY , webpackFactoryPath ) ;
89
112
90
- if ( typeof context . isWatch !== 'boolean' ) {
91
- context . isWatch = hasArg ( '--watch' ) ;
113
+ const ionicTypescriptLoaderPath = getConfigValue ( context , '--ionicTypescriptLoaderPath' , null , ENV_WEBPACK_LOADER , ENV_WEBPACK_LOADER . toLowerCase ( ) , join ( getProcessEnvVar ( ENV_VAR_APP_SCRIPTS_DIR ) , 'dist' , 'webpack' , 'typescript-sourcemap-loader-memory.js' ) ) ;
114
+ setProcessEnvVar ( ENV_WEBPACK_LOADER , ionicTypescriptLoaderPath ) ;
115
+
116
+ if ( ! isValidBundler ( context . bundler ) ) {
117
+ context . bundler = bundlerStrategy ( context ) ;
92
118
}
93
119
94
120
context . inlineTemplates = true ;
@@ -399,11 +425,19 @@ const ENV_VAR_SRC_DIR = 'IONIC_SRC_DIR';
399
425
const ENV_VAR_WWW_DIR = 'IONIC_WWW_DIR' ;
400
426
const ENV_VAR_BUILD_DIR = 'IONIC_BUILD_DIR' ;
401
427
const ENV_VAR_APP_SCRIPTS_DIR = 'IONIC_APP_SCRIPTS_DIR' ;
402
- const ENV_VAR_SOURCE_MAP = 'IONIC_SOURCE_MAP' ;
403
- const ENV_TS_CONFIG_PATH = 'IONIC_TS_CONFIG_PATH' ;
404
- const ENV_APP_ENTRY_POINT_PATH = 'IONIC_APP_ENTRY_POINT_PATH' ;
405
- const ENV_PATH_TO_GLOB_UTILS = 'IONIC_PATH_TO_GLOB_UTILS' ;
428
+ const ENV_VAR_GENERATE_SOURCE_MAP = 'IONIC_GENERATE_SOURCE_MAP' ;
429
+ const ENV_VAR_SOURCE_MAP_TYPE = 'IONIC_SOURCE_MAP_TYPE' ;
430
+ const ENV_TS_CONFIG = 'IONIC_TS_CONFIG' ;
431
+ const ENV_APP_ENTRY_POINT = 'IONIC_APP_ENTRY_POINT' ;
432
+ const ENV_GLOB_UTIL = 'IONIC_GLOB_UTIL' ;
406
433
const ENV_CLEAN_BEFORE_COPY = 'IONIC_CLEAN_BEFORE_COPY' ;
434
+ const ENV_CLOSURE_JAR = 'IONIC_CLOSURE_JAR' ;
435
+ const ENV_OUTPUT_JS_FILE_NAME = 'IONIC_OUTPUT_JS_FILE_NAME' ;
436
+ const ENV_OUTPUT_JS_MAP_FILE_NAME = 'IONIC_OUTPUT_JS_MAP_FILE_NAME' ;
437
+ const ENV_OUTPUT_CSS_FILE_NAME = 'IONIC_OUTPUT_CSS_FILE_NAME' ;
438
+ const ENV_OUTPUT_CSS_MAP_FILE_NAME = 'IONIC_OUTPUT_CSS_MAP_FILE_NAME' ;
439
+ const ENV_WEBPACK_FACTORY = 'IONIC_WEBPACK_FACTORY' ;
440
+ const ENV_WEBPACK_LOADER = 'IONIC_WEBPACK_LOADER' ;
407
441
408
442
export const BUNDLER_ROLLUP = 'rollup' ;
409
443
export const BUNDLER_WEBPACK = 'webpack' ;
0 commit comments