Skip to content

Commit a659636

Browse files
tlancinaimhoffd
authored andcommitted
feat(build): add --cordova-mock option (#63)
Add support for adding a blank `cordova.js` to the build with `--cordova-mock`.
1 parent a18ef21 commit a659636

File tree

7 files changed

+46
-9
lines changed

7 files changed

+46
-9
lines changed

builders/cordova-build/cordova.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// mock cordova.js

builders/cordova-build/index.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,25 @@ export class CordovaBuildBuilder implements Builder<CordovaBuildBuilderSchema> {
2323
tap(description => browserDescription = description),
2424
concatMap(() => this.context.architect.validateBuilderOptions(browserConfig, browserDescription)),
2525
tap(config => browserConfig = config),
26+
tap(() => this.validateBuilderConfig(builderConfig.options)),
2627
tap(() => this.prepareBrowserConfig(builderConfig.options, browserConfig.options)),
2728
concatMap(() => of(this.context.architect.getBuilder(browserDescription, this.context))),
2829
concatMap(builder => builder.run(browserConfig))
2930
);
3031
}
3132

33+
// Mutates builderOptions
34+
validateBuilderConfig(builderOptions: CordovaBuildBuilderSchema) {
35+
// if we're mocking cordova.js, don't build cordova bundle
36+
if (builderOptions.cordovaMock) {
37+
builderOptions.cordovaAssets = false;
38+
}
39+
40+
if (builderOptions.cordovaAssets && !builderOptions.platform) {
41+
throw new Error('The `--platform` option is required with `--cordova-assets`');
42+
}
43+
}
44+
3245
// Mutates browserOptions
3346
prepareBrowserConfig(options: CordovaBuildBuilderSchema, browserOptions: BrowserBuilderSchema) {
3447
const cordovaBasePath = normalize(options.cordovaBasePath ? options.cordovaBasePath : '.');
@@ -41,7 +54,13 @@ export class CordovaBuildBuilder implements Builder<CordovaBuildBuilderSchema> {
4154
// by default. Let's keep it around.
4255
browserOptions.deleteOutputPath = false;
4356

44-
if (options.cordovaAssets) {
57+
if (options.cordovaMock) {
58+
browserOptions.scripts.push({
59+
input: getSystemPath(join(normalize(__dirname), normalize('cordova.js'))),
60+
bundleName: 'cordova',
61+
lazy: false,
62+
});
63+
} else if (options.cordovaAssets) {
4564
const platformWWWPath = join(cordovaBasePath, normalize(`platforms/${options.platform}/platform_www`));
4665

4766
// Add Cordova www assets that were generated whenever platform(s) and

builders/cordova-build/schema.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
export interface CordovaBuildBuilderSchema {
22
browserTarget: string;
3-
platform: string;
3+
platform?: string;
44
cordovaBasePath?: string;
55
sourceMap?: boolean;
66
cordovaAssets?: boolean;
7+
cordovaMock?: boolean;
78
}

builders/cordova-build/schema.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,15 @@
2323
"type": "boolean",
2424
"description": "Bundle Cordova assets with build",
2525
"default": true
26+
},
27+
"cordovaMock": {
28+
"type": "boolean",
29+
"description": "Bundle empty cordova.js with build",
30+
"default": false
2631
}
2732
},
2833
"additionalProperties": false,
2934
"required": [
30-
"browserTarget",
31-
"platform"
35+
"browserTarget"
3236
]
3337
}

builders/cordova-serve/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ export class CordovaServeBuilder implements Builder<CordovaServeBuilderSchema> {
3636
}
3737

3838
protected _getCordovaBuildConfig(cordovaServeOptions: CordovaServeBuilderSchema): Observable<BuilderConfiguration<CordovaBuildBuilderSchema>> {
39-
const { platform } = cordovaServeOptions;
39+
const { platform, cordovaAssets, cordovaMock } = cordovaServeOptions;
4040
const [ project, target, configuration ] = cordovaServeOptions.cordovaBuildTarget.split(':');
41-
const cordovaBuildTargetSpec = { project, target, configuration, overrides: { platform } };
41+
const cordovaBuildTargetSpec = { project, target, configuration, overrides: { platform, cordovaAssets, cordovaMock } };
4242
const cordovaBuildTargetConfig = this.context.architect.getBuilderConfiguration<CordovaBuildBuilderSchema>(cordovaBuildTargetSpec);
4343

4444
return this.context.architect.getBuilderDescription(cordovaBuildTargetConfig).pipe(
@@ -54,6 +54,7 @@ class CordovaDevServerBuilder extends DevServerBuilder {
5454

5555
buildWebpackConfig(root: Path, projectRoot: Path, host: virtualFs.Host<fs.Stats>, browserOptions: NormalizedBrowserBuilderSchema) {
5656
const builder = new CordovaBuildBuilder(this.context);
57+
builder.validateBuilderConfig(this.cordovaBuildOptions);
5758
builder.prepareBrowserConfig(this.cordovaBuildOptions, browserOptions);
5859

5960
return super.buildWebpackConfig(root, projectRoot, host, browserOptions);

builders/cordova-serve/schema.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
export interface CordovaServeBuilderSchema {
22
cordovaBuildTarget: string;
33
devServerTarget: string;
4-
platform: string;
4+
platform?: string;
55
port?: number;
66
host?: string;
77
ssl?: boolean;
88
cordovaBasePath?: string;
99
sourceMap?: boolean;
10+
cordovaAssets?: boolean;
11+
cordovaMock?: boolean;
1012
}

builders/cordova-serve/schema.json

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,21 @@
3737
"sourceMap": {
3838
"type": "boolean",
3939
"description": "Create source-map file"
40+
},
41+
"cordovaAssets": {
42+
"type": "boolean",
43+
"description": "Bundle Cordova assets with build",
44+
"default": true
45+
},
46+
"cordovaMock": {
47+
"type": "boolean",
48+
"description": "Bundle empty cordova.js with build",
49+
"default": false
4050
}
4151
},
4252
"additionalProperties": false,
4353
"required": [
4454
"cordovaBuildTarget",
45-
"devServerTarget",
46-
"platform"
55+
"devServerTarget"
4756
]
4857
}

0 commit comments

Comments
 (0)