forked from ionic-team/angular-toolkit
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
merge @ionic/ng-toolit and @ionic/schematics-angular
- Loading branch information
Showing
22 changed files
with
774 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package-lock.json | ||
node_modules | ||
**/*.js | ||
**/*.d.ts | ||
!builders/**/schema.d.ts | ||
!schematics/**/schema.d.ts | ||
!schematics/*/files/**/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# having this file excludes .gitignore entries | ||
|
||
tsconfig.json | ||
tslint.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
package-lock=false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
# angular-toolkit | ||
# @ionic/angular-toolkit | ||
|
||
Angular Schematics and Builders for `@ionic/angular` apps. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"builders": { | ||
"cordova-build": { | ||
"class": "./builders/cordova-build", | ||
"schema": "./builders/cordova-build/schema.json", | ||
"description": "Perform a browser build with Cordova assets." | ||
}, | ||
"cordova-serve": { | ||
"class": "./builders/cordova-serve", | ||
"schema": "./builders/cordova-serve/schema.json", | ||
"description": "Run the dev-server with Cordova assets." | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
import { BuildEvent, Builder, BuilderConfiguration, BuilderContext } from '@angular-devkit/architect'; | ||
import { BrowserBuilder } from '@angular-devkit/build-angular/src/browser'; | ||
import { BrowserBuilderSchema } from '@angular-devkit/build-angular/src/browser/schema'; | ||
import { getSystemPath, join, normalize } from '@angular-devkit/core'; | ||
import { Observable, of } from 'rxjs'; | ||
import { concatMap, tap } from 'rxjs/operators'; | ||
|
||
import { CordovaBuildBuilderSchema } from './schema'; | ||
|
||
export { CordovaBuildBuilderSchema }; | ||
|
||
export class CordovaBuildBuilder implements Builder<CordovaBuildBuilderSchema> { | ||
constructor(public context: BuilderContext) {} | ||
|
||
run(builderConfig: BuilderConfiguration<CordovaBuildBuilderSchema>): Observable<BuildEvent> { | ||
const browserBuilder = new BrowserBuilder(this.context); // TODO: shouldn't this use `architect.getBuilder()`? | ||
|
||
return this.buildBrowserConfig(builderConfig.options).pipe( | ||
concatMap(browserConfig => browserBuilder.run(browserConfig)) | ||
); | ||
} | ||
|
||
buildBrowserConfig(options: CordovaBuildBuilderSchema): Observable<BuilderConfiguration<BrowserBuilderSchema>> { | ||
let browserConfig: BuilderConfiguration<BrowserBuilderSchema>; | ||
|
||
return of(null).pipe(// tslint:disable-line:no-null-keyword | ||
concatMap(() => this._getBrowserConfig(options)), | ||
tap(config => browserConfig = config), | ||
tap(() => this.prepareBrowserConfig(options, browserConfig.options)), | ||
concatMap(() => of(browserConfig)) | ||
); | ||
} | ||
|
||
// Mutates browserOptions | ||
prepareBrowserConfig(options: CordovaBuildBuilderSchema, browserOptions: BrowserBuilderSchema) { | ||
const cordovaBasePath = normalize(options.cordovaBasePath ? options.cordovaBasePath : '.'); | ||
|
||
// We always need to output the build to `www` because it is a hard | ||
// requirement of Cordova. | ||
browserOptions.outputPath = join(cordovaBasePath, normalize('www')); | ||
|
||
if (options.cordovaAssets) { | ||
const platformWWWPath = join(cordovaBasePath, normalize(`platforms/${options.platform}/platform_www`)); | ||
|
||
// Add Cordova www assets that were generated whenever platform(s) and | ||
// plugin(s) are added. This includes `cordova.js`, | ||
// `cordova_plugins.js`, and all plugin JS. | ||
browserOptions.assets.push({ | ||
glob: '**/*', | ||
input: getSystemPath(platformWWWPath), | ||
output: './', | ||
}); | ||
|
||
// Register `cordova.js` as a global script so it is included in | ||
// `index.html`. | ||
browserOptions.scripts.push({ | ||
input: getSystemPath(join(platformWWWPath, normalize('cordova.js'))), | ||
bundleName: 'cordova', | ||
lazy: false, | ||
}); | ||
} | ||
} | ||
|
||
protected _getBrowserConfig(options: CordovaBuildBuilderSchema): Observable<BuilderConfiguration<BrowserBuilderSchema>> { | ||
const { architect } = this.context; | ||
const [ project, target, configuration ] = options.browserTarget.split(':'); | ||
const browserTargetSpec = { project, target, configuration, overrides: {} }; | ||
const builderConfig = architect.getBuilderConfiguration<BrowserBuilderSchema>(browserTargetSpec); | ||
|
||
return architect.getBuilderDescription(builderConfig).pipe( | ||
concatMap(browserDescription => architect.validateBuilderOptions(builderConfig, browserDescription)) | ||
); | ||
} | ||
} | ||
|
||
export default CordovaBuildBuilder; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
export interface CordovaBuildBuilderSchema { | ||
browserTarget: string; | ||
platform: string; | ||
cordovaBasePath?: string; | ||
sourceMap?: boolean; | ||
cordovaAssets?: boolean; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{ | ||
"title": "Cordova build for Ionic", | ||
"description": "Options for Cordova build for Ionic.", | ||
"type": "object", | ||
"properties": { | ||
"browserTarget": { | ||
"type": "string", | ||
"description": "Target to build." | ||
}, | ||
"platform": { | ||
"type": "string", | ||
"description": "Cordova platform to use during build." | ||
}, | ||
"cordovaBasePath": { | ||
"type": "string", | ||
"description": "Path to cordova directory" | ||
}, | ||
"sourceMap": { | ||
"type": "boolean", | ||
"description": "Create source-map file" | ||
}, | ||
"cordovaAssets": { | ||
"type": "boolean", | ||
"description": "Bundle Cordova assets with build", | ||
"default": true | ||
} | ||
}, | ||
"additionalProperties": false, | ||
"required": [ | ||
"browserTarget", | ||
"platform" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
import { BuildEvent, Builder, BuilderConfiguration, BuilderContext, BuilderDescription } from '@angular-devkit/architect'; | ||
import { BrowserBuilderSchema } from '@angular-devkit/build-angular/src/browser/schema'; | ||
import { DevServerBuilder, DevServerBuilderOptions } from '@angular-devkit/build-angular/src/dev-server'; | ||
import { Path, virtualFs } from '@angular-devkit/core'; | ||
import * as ζfs from 'fs'; | ||
import { Observable, of } from 'rxjs'; | ||
import { concatMap, tap } from 'rxjs/operators'; | ||
|
||
import { CordovaBuildBuilder, CordovaBuildBuilderSchema } from '../cordova-build'; | ||
|
||
import { CordovaServeBuilderSchema } from './schema'; | ||
|
||
export class CordovaServeBuilder implements Builder<CordovaServeBuilderSchema> { | ||
constructor(public context: BuilderContext) {} | ||
|
||
run(builderConfig: BuilderConfiguration<CordovaServeBuilderSchema>): Observable<BuildEvent> { | ||
const [ project, target, configuration ] = builderConfig.options.devServerTarget.split(':'); | ||
const { port, host, proxyConfig } = builderConfig.options; | ||
const devServerTargetSpec = { project, target, configuration, overrides: { port, host, proxyConfig } }; | ||
const devServerBuilderConfig = this.context.architect.getBuilderConfiguration<DevServerBuilderOptions>(devServerTargetSpec); | ||
|
||
let devServerDescription: BuilderDescription; | ||
|
||
return this.context.architect.getBuilderDescription(devServerBuilderConfig).pipe( | ||
tap(description => devServerDescription = description), | ||
concatMap(() => this.context.architect.validateBuilderOptions(devServerBuilderConfig, devServerDescription)), | ||
concatMap(() => of(new CordovaDevServerBuilder(this.context, builderConfig.options))), | ||
// concatMap(() => of(this.context.architect.getBuilder(devServerDescription, this.context))), | ||
concatMap(builder => builder.run(devServerBuilderConfig)) | ||
); | ||
} | ||
} | ||
|
||
class CordovaDevServerBuilder extends DevServerBuilder { | ||
constructor(context: BuilderContext, public cordovaServeOptions: CordovaServeBuilderSchema) { | ||
super(context); | ||
} | ||
|
||
// run(builderConfig: BuilderConfiguration</* DevServerBuilderOptions */any>): Observable<BuildEvent> { | ||
// return super.run(builderConfig); | ||
// } | ||
|
||
buildWebpackConfig(root: Path, projectRoot: Path, host: virtualFs.Host<ζfs.Stats>, browserOptions: BrowserBuilderSchema) { | ||
const { platform } = this.cordovaServeOptions; | ||
const [ project, target, configuration ] = this.cordovaServeOptions.cordovaBuildTarget.split(':'); | ||
const cordovaBuildTargetSpec = { project, target, configuration, overrides: { platform } }; | ||
const cordovaBuildTargetConfig = this.context.architect.getBuilderConfiguration<CordovaBuildBuilderSchema>(cordovaBuildTargetSpec); | ||
|
||
const builder = new CordovaBuildBuilder(this.context); | ||
builder.prepareBrowserConfig(cordovaBuildTargetConfig.options, browserOptions); | ||
|
||
return super.buildWebpackConfig(root, projectRoot, host, browserOptions); | ||
} | ||
} | ||
|
||
export default CordovaServeBuilder; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
export interface CordovaServeBuilderSchema { | ||
cordovaBuildTarget: string; | ||
devServerTarget: string; | ||
platform: string; | ||
port?: number; | ||
host?: string; | ||
proxyConfig?: string; | ||
cordovaBasePath?: string; | ||
sourceMap?: boolean; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
{ | ||
"title": "Cordova serve for Ionic", | ||
"description": "Options for Cordova serve for Ionic.", | ||
"type": "object", | ||
"properties": { | ||
"cordovaBuildTarget": { | ||
"type": "string", | ||
"description": "Target to use for build." | ||
}, | ||
"devServerTarget": { | ||
"type": "string", | ||
"description": "Target to use for serve." | ||
}, | ||
"platform": { | ||
"type": "string", | ||
"description": "Cordova platform to use during serve." | ||
}, | ||
"proxyConfig": { | ||
"type": "string", | ||
"description": "Proxy configuration file." | ||
}, | ||
"port": { | ||
"type": "number", | ||
"description": "Port to listen on.", | ||
"default": 4200 | ||
}, | ||
"host": { | ||
"type": "string", | ||
"description": "Host to listen on.", | ||
"default": "localhost" | ||
}, | ||
"cordovaBasePath": { | ||
"type": "string", | ||
"description": "Path to cordova directory" | ||
}, | ||
"sourceMap": { | ||
"type": "boolean", | ||
"description": "Create source-map file" | ||
} | ||
}, | ||
"additionalProperties": false, | ||
"required": [ | ||
"cordovaBuildTarget", | ||
"devServerTarget", | ||
"platform" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
{ | ||
"schematics": { | ||
"page": { | ||
"aliases": ["pg"], | ||
"factory": "./schematics/page", | ||
"description": "Create an Ionic page.", | ||
"schema": "./schematics/page/schema.json" | ||
}, | ||
"class": { | ||
"aliases": ["cl"], | ||
"extends": "@schematics/angular:class" | ||
}, | ||
"component": { | ||
"aliases": ["c"], | ||
"extends": "@schematics/angular:component" | ||
}, | ||
"directive": { | ||
"aliases": ["d"], | ||
"extends": "@schematics/angular:directive" | ||
}, | ||
"enum": { | ||
"aliases": ["e"], | ||
"extends": "@schematics/angular:enum" | ||
}, | ||
"guard": { | ||
"aliases": ["g"], | ||
"extends": "@schematics/angular:guard" | ||
}, | ||
"interface": { | ||
"aliases": ["i"], | ||
"extends": "@schematics/angular:interface" | ||
}, | ||
"module": { | ||
"aliases": ["m"], | ||
"extends": "@schematics/angular:module" | ||
}, | ||
"pipe": { | ||
"aliases": ["p"], | ||
"extends": "@schematics/angular:pipe" | ||
}, | ||
"service": { | ||
"aliases": ["s"], | ||
"extends": "@schematics/angular:service" | ||
}, | ||
"application": { | ||
"aliases": ["app"], | ||
"extends": "@schematics/angular:application" | ||
}, | ||
"library": { | ||
"aliases": ["lib"], | ||
"extends": "@schematics/angular:library" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
{ | ||
"name": "@ionic/angular-toolkit", | ||
"version": "1.0.0", | ||
"description": "Schematics and builders for @ionic/angular apps.", | ||
"homepage": "https://ionicframework.com/", | ||
"author": "Ionic Team <hi@ionicframework.com> (https://ionicframework.com)", | ||
"scripts": { | ||
"lint": "tslint --config tslint.js --project tsconfig.json", | ||
"build": "tsc", | ||
"watch": "tsc -w", | ||
"prepublishOnly": "npm run build" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/ionic-team/angular-toolkit.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/ionic-team/angular-toolkit/issues" | ||
}, | ||
"keywords": [ | ||
"angular", | ||
"Angular CLI", | ||
"blueprints", | ||
"code generation", | ||
"devkit", | ||
"schematics", | ||
"ionic", | ||
"ionic framework", | ||
"ionicframework" | ||
], | ||
"dependencies": { | ||
"@angular-devkit/architect": "0.9.0-beta.3", | ||
"@angular-devkit/build-angular": "0.9.0-beta.3", | ||
"@angular-devkit/core": "0.9.0-beta.3", | ||
"@angular-devkit/schematics": "0.9.0-beta.3", | ||
"@schematics/angular": "0.9.0-beta.3", | ||
"tslib": "^1.9.0", | ||
"typescript": "3.0.1" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "^8.10.34", | ||
"@types/webpack": "^4.4.14", | ||
"@types/webpack-dev-server": "^3.1.1", | ||
"lint-staged": "^7.2.0", | ||
"rimraf": "^2.6.2", | ||
"tslint": "^5.9.1", | ||
"tslint-ionic-rules": "0.0.19" | ||
}, | ||
"builders": "./builders.json", | ||
"schematics": "./collection.json", | ||
"lint-staged": { | ||
"linters": { | ||
"*.{ts,tsx}": "npm run lint" | ||
}, | ||
"ignore": [ | ||
"**/__tests__/*.{ts,tsx}" | ||
] | ||
} | ||
} |
Oops, something went wrong.