UNPKG

nodram

Version:
54 lines (37 loc) 1.92 kB
import {RConfig} from "../../../helpers/RConfig"; import {Observable} from "rxjs"; import * as path from 'path'; import * as chalk from 'chalk'; import {UtilsTask} from "../../UtilsTask"; import {SassBuilder} from "../SassBuilder"; import {ProdAotAppTask as AppTask} from "./prod.aot.app-task"; export class Builder{ private mode: string = "prod-aot"; protected config: RConfig; constructor(private ROOT_DIR) { this.config = new RConfig(); } public build(): Observable<any> { console.log(chalk.green(`------------------- APP BUILD(${this.mode}) -----------------------------`)); const config = this.config; const rootDir = config.get("scripts.rootDir"); let scriptsOutDir = path.join(process.cwd(), config.get("scripts.outDir")); let binDir = path.join(process.cwd(), "/bin"); let ngFactories = path.join(process.cwd(),"**/*.ngfactory.ts"); let clientFiles = path.join(process.cwd(),rootDir,"/**/*.js"); let stylesConfig = this.config.get("styles"); let stylesOutDir = path.join(process.cwd(), stylesConfig.outDir); let distDir = path.join(process.cwd(), "/dist"); const excludes = config.get("scripts.excludes").map(v => "!"+path.join(process.cwd(),`${rootDir}/${v}`)); const patterns = [binDir, scriptsOutDir, ngFactories, stylesOutDir, clientFiles].concat(excludes); const appBuilder = new AppTask(this.ROOT_DIR); const sassBuilder = new SassBuilder(); return UtilsTask.cleanFiles(patterns) .concat(appBuilder.runNgc()) .concat(UtilsTask.cleanFiles([distDir])) .concat(appBuilder.refactorApp()) .concat(sassBuilder.compileBootstrapSass()) .concat(appBuilder.runWebpack()) .concat(appBuilder.minifyBundleFiles()); } }