UNPKG

@tsdi/pack

Version:

@tsdi/pack is simple build tasks, base on AOP, Ioc container, via @tsdi. dev build pack activities.

183 lines (181 loc) 7 kB
import { __awaiter, __decorate, __metadata } from "tslib"; import { isBoolean } from '@tsdi/ioc'; import { syncRequire } from '@tsdi/platform-server'; import { Input } from '@tsdi/components'; import { Task } from '@tsdi/activities'; import { nodeModuleNameResolver, sys } from 'typescript'; import { createFilter } from 'rollup-pluginutils'; import { RollupActivity } from './RollupActivity'; import { TsComplie } from '../ts-complie'; import { tsdexp } from '../exps'; const TSLIB_ID = '\0tslib'; let RollupTsActivity = class RollupTsActivity extends RollupActivity { execute(ctx) { const _super = Object.create(null, { execute: { get: () => super.execute } }); return __awaiter(this, void 0, void 0, function* () { this.exeCache = {}; yield _super.execute.call(this, ctx); delete this.exeCache; }); } getInputProps() { return [...super.getInputProps(), 'beforeCompile', 'afterCompile']; } vailfExternal(external) { if (this.includeLib && this.includeLib.length) { return (external || []).filter(ex => this.includeLib.indexOf(ex) < 0); } return super.vailfExternal(external); } setOptions(ctx, opts, key, val) { if (key === 'beforeCompile') { this.exeCache.beforeCompile = val; } else if (key === 'afterCompile') { this.exeCache.afterCompile = val; } else { super.setOptions(ctx, opts, key, val); } } resolvePlugins(ctx, opts) { return __awaiter(this, void 0, void 0, function* () { let plugins = []; let { beforeCompile, afterCompile } = this.exeCache; if (beforeCompile && beforeCompile.length) { plugins.push(...beforeCompile); } if (this.tscompile) { let compile = yield ctx.resolveExpression(this.tscompile); plugins.push(compile); } else { plugins.push(yield this.getDefaultTsCompiler(ctx)); } if (opts.plugins && opts.plugins.length) { plugins.push(...opts.plugins); } if (afterCompile && afterCompile.length) { plugins.push(...afterCompile); } if (this.uglify) { let ugfy = yield ctx.resolveExpression(this.uglify); const uglify = syncRequire('rollup-plugin-uglify'); if (isBoolean(ugfy)) { ugfy && plugins.push(uglify()); } else { plugins.push(ugfy); } } opts.plugins = plugins; }); } getDefaultTsCompiler(ctx) { return __awaiter(this, void 0, void 0, function* () { const tslib = syncRequire('tslib'); let include = yield ctx.resolveExpression(this.include); let exclude = yield ctx.resolveExpression(this.exclude); let annotation = yield ctx.resolveExpression(this.annotation); const filter = createFilter(include, exclude); let compile = ctx.injector.get(TsComplie); let projectDirectory = ctx.platform.getRootPath(); let settings = yield ctx.resolveExpression(this.compileOptions); let tsconfig = yield ctx.resolveExpression(this.tsconfig); tsconfig = ctx.platform.toRootPath(tsconfig); let parsed = compile.parseTsconfig(projectDirectory, tsconfig, settings); const allImportedFiles = new Set(); return { name: 'typescript', resolveId(importee, importer) { if (importee === 'tslib') { return TSLIB_ID; } if (!importer) { return null; } importer = ctx.platform.normalize(importer); if (!allImportedFiles.has(importer)) { return; } const result = nodeModuleNameResolver(importee, importer, parsed.options, sys); if (result.resolvedModule && result.resolvedModule.resolvedFileName) { if (tsdexp.test(result.resolvedModule.resolvedFileName || '')) { return null; } return result.resolvedModule.resolvedFileName; } return null; }, load(id) { if (id === TSLIB_ID) { return tslib; } }, transform(code, id) { if (!filter(id)) { return undefined; } allImportedFiles.add(id.split('\\').join('/')); return compile.transpileModule(parsed.options, id, code, annotation); } }; }); } static ρAnn() { return { "name": "RollupTsActivity", "params": { "execute": ["ctx"], "vailfExternal": ["external"], "setOptions": ["ctx", "opts", "key", "val"], "resolvePlugins": ["ctx", "opts"], "getDefaultTsCompiler": ["ctx"] } }; } }; __decorate([ Input('beforeCompilePlugins'), __metadata("design:type", Object) ], RollupTsActivity.prototype, "beforeCompile", void 0); __decorate([ Input(), __metadata("design:type", Object) ], RollupTsActivity.prototype, "tscompile", void 0); __decorate([ Input('afterCompilePlugins'), __metadata("design:type", Object) ], RollupTsActivity.prototype, "afterCompile", void 0); __decorate([ Input(), __metadata("design:type", Array) ], RollupTsActivity.prototype, "includeLib", void 0); __decorate([ Input(), __metadata("design:type", Object) ], RollupTsActivity.prototype, "annotation", void 0); __decorate([ Input('include', ['*.ts+(|x)', '**/*.ts+(|x)']), __metadata("design:type", Object) ], RollupTsActivity.prototype, "include", void 0); __decorate([ Input('exclude', ['*.d.ts', '**/*.d.ts']), __metadata("design:type", Object) ], RollupTsActivity.prototype, "exclude", void 0); __decorate([ Input(), __metadata("design:type", Object) ], RollupTsActivity.prototype, "dts", void 0); __decorate([ Input('tsconfig', './tsconfig.json'), __metadata("design:type", Object) ], RollupTsActivity.prototype, "tsconfig", void 0); __decorate([ Input(), __metadata("design:type", Object) ], RollupTsActivity.prototype, "compileOptions", void 0); __decorate([ Input(), __metadata("design:type", Object) ], RollupTsActivity.prototype, "uglify", void 0); RollupTsActivity = __decorate([ Task({ selector: 'rts' }) ], RollupTsActivity); export { RollupTsActivity }; //# sourceMappingURL=../sourcemaps/rollups/RollupTsActivity.js.map