@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
JavaScript
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