124 lines
2.7 KiB
TypeScript
124 lines
2.7 KiB
TypeScript
import type { Tree } from '@nx/devkit';
|
|
import { addProjectConfiguration, names, updateJson } from '@nx/devkit';
|
|
|
|
export interface AppConfig {
|
|
appName: string; // name of app
|
|
appModule: string; // app/app.module.ts in the above sourceDir
|
|
}
|
|
|
|
export interface LibConfig {
|
|
name: string;
|
|
module: string;
|
|
barrel: string;
|
|
}
|
|
|
|
var appConfig: AppConfig; // configure built in createApp()
|
|
var libConfig: LibConfig;
|
|
|
|
export function getAppConfig(): AppConfig {
|
|
return appConfig;
|
|
}
|
|
|
|
export function getLibConfig(): LibConfig {
|
|
return libConfig;
|
|
}
|
|
|
|
export function createApp(
|
|
tree: Tree,
|
|
appName: string,
|
|
routing: boolean = true
|
|
) {
|
|
appName = names(appName).fileName;
|
|
// save for getAppDir() lookup by external *.spec.ts tests
|
|
appConfig = {
|
|
appName,
|
|
appModule: `${appName}/src/app/app.module.ts`,
|
|
};
|
|
|
|
tree.write(
|
|
appConfig.appModule,
|
|
`
|
|
import { NgModule } from '@angular/core';
|
|
import { BrowserModule } from '@angular/platform-browser';
|
|
${routing ? "import { RouterModule } from '@angular/router'" : ''};
|
|
import { AppComponent } from './app.component';
|
|
@NgModule({
|
|
imports: [BrowserModule, ${routing ? 'RouterModule.forRoot([])' : ''}],
|
|
declarations: [AppComponent],
|
|
bootstrap: [AppComponent]
|
|
})
|
|
export class AppModule {}
|
|
`
|
|
);
|
|
tree.write(
|
|
`${appName}/src/main.ts`,
|
|
`
|
|
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
|
|
import { AppModule } from './app/app.module';
|
|
|
|
platformBrowserDynamic()
|
|
.bootstrapModule(AppModule)
|
|
.catch(err => console.log(err));
|
|
`
|
|
);
|
|
tree.write(
|
|
`${appName}/tsconfig.app.json`,
|
|
JSON.stringify({
|
|
include: ['**/*.ts'],
|
|
})
|
|
);
|
|
tree.write(
|
|
`${appName}-e2e/tsconfig.e2e.json`,
|
|
JSON.stringify({
|
|
include: ['../**/*.ts'],
|
|
})
|
|
);
|
|
addProjectConfiguration(tree, appName, {
|
|
root: `${appName}`,
|
|
sourceRoot: `${appName}/src`,
|
|
targets: {
|
|
build: {
|
|
options: {
|
|
main: `${appName}/src/main.ts`,
|
|
},
|
|
},
|
|
serve: {
|
|
options: {},
|
|
},
|
|
},
|
|
tags: [],
|
|
});
|
|
}
|
|
|
|
export function createLib(tree: Tree, libName: string) {
|
|
const { name, className, fileName, propertyName } = names(libName);
|
|
|
|
libConfig = {
|
|
name,
|
|
module: `${propertyName}/src/lib/${fileName}.module.ts`,
|
|
barrel: `${propertyName}/src/index.ts`,
|
|
};
|
|
|
|
tree.write(
|
|
libConfig.module,
|
|
`
|
|
import { NgModule } from '@angular/core';
|
|
import { CommonModule } from '@angular/common';
|
|
@NgModule({
|
|
imports: [
|
|
CommonModule
|
|
],
|
|
providers: []
|
|
})
|
|
export class ${className}Module { }
|
|
`
|
|
);
|
|
tree.write(
|
|
libConfig.barrel,
|
|
`
|
|
export * from './lib/${fileName}.module';
|
|
`
|
|
);
|
|
}
|