@tsdi/pack
Version:
@tsdi/pack is simple build tasks, base on AOP, Ioc container, via @tsdi. dev build pack activities.
160 lines (158 loc) • 7.45 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { isArray } from '@tsdi/ioc';
import { Input } from '@tsdi/components';
import { Task, Activities } from '@tsdi/activities';
import { LibPackBuilder } from './LibPackBuilder';
import { tsFileExp } from '../exps';
const rename = require('gulp-rename');
const uglify = require('gulp-uglify-es').default;
/**
* build ts project by rollup
*
* @export
* @class TsLibPackBuilder
* @extends {LibPackBuilder}
* @implements {AfterInit}
*/
let TsLibPackBuilder = class TsLibPackBuilder extends LibPackBuilder {
vaidts(input) {
let inputs = input.input || this.mainFile;
if (inputs) {
return isArray(inputs) ? inputs.some(i => tsFileExp.test(i)) : tsFileExp.test(inputs);
}
return false;
}
static ρAnn() {
return { "name": "TsLibPackBuilder", "params": { "vaidts": ["input"] } };
}
};
__decorate([
Input(),
__metadata("design:type", String)
], TsLibPackBuilder.prototype, "mainFile", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], TsLibPackBuilder.prototype, "beforeCompile", void 0);
TsLibPackBuilder = __decorate([
Task({
selector: 'tslibs',
template: [
{
activity: 'clean',
clean: 'binding: outDir'
},
{
activity: 'test',
test: 'binding: test',
},
{
activity: 'asset',
src: ['package.json', '*.md'],
dist: 'binding: outDir'
},
{
activity: 'each',
each: 'binding: bundles',
body: [
{
activity: Activities.if,
condition: (ctx, bind) => bind.getScope().vaidts(ctx.getInput()),
body: {
activity: 'rts',
input: (ctx, bind) => bind.getScope().transRollupInput(ctx.getInput()),
sourcemap: 'binding: sourcemap',
plugins: (ctx, bind) => bind.getScope().transPlugins(ctx),
external: 'binding: external',
options: 'binding: options',
globals: 'binding: globals',
output: (ctx, bind) => bind.getScope().transRollupoutput(ctx.getInput())
}
},
{
activity: Activities.elseif,
condition: ctx => ctx.getInput().input,
body: {
activity: 'rollup',
input: (ctx, bind) => bind.getScope().transRollupInput(ctx.getInput()),
sourcemap: 'binding: sourcemap',
plugins: 'binding: transPlugins(ctx)',
external: 'binding: external',
options: 'binding: options',
globals: 'binding: globals',
output: (ctx, bind) => bind.getScope().transRollupoutput(ctx.getInput())
}
},
{
activity: Activities.if,
condition: ctx => ctx.getInput().uglify,
body: {
activity: 'asset',
src: (ctx, bind) => bind.getScope().getBundleSrc(ctx.getInput()),
dist: (ctx, bind) => bind.getScope().toModulePath(bind.getInput()),
sourcemap: 'binding: sourcemap | path:"./"',
pipes: [
() => uglify(),
() => rename({ suffix: '.min' })
]
}
},
{
activity: Activities.if,
condition: ctx => ctx.getInput().moduleName || ctx.getInput().target,
body: {
activity: 'asset',
src: (ctx, bind) => bind.getScope().toOutputPath('package.json'),
dist: 'binding: outDir',
pipes: [
{
activity: 'jsonEdit',
json: (json, bind) => {
let input = bind.getInput();
let scope = bind.getScope();
// to replace module export.
if (input.target) {
json[input.target] = ['.', scope.getTargetFolder(input), input.main || 'index.js'].join('/');
}
let outmain = ['.', scope.getModuleFolder(input), input.outputFile || 'index.js'].join('/');
if (isArray(input.moduleName)) {
input.moduleName.forEach(n => {
json[n] = outmain;
});
}
else if (input.moduleName) {
json[input.moduleName] = outmain;
}
if (input.dtsMain) {
json['typings'] = ['.', scope.getTargetFolder(input), input.dtsMain].join('/');
}
return json;
}
}
]
}
}
]
}
]
// template: `
// <clean [clean]="outDir"></clean>
// <test [test]="outDir"></test>
// <asset [src]="['package.json', '*.md']" [test]="outDir"></asset>
// <sequence *each="let input in bundles">
// <rts *if="vaidts(input)" [input]="transRollupInput(input)" [sourcemap]="sourcemap" [plugins]="transPlugins(ctx)" [external]="external"
// [options]="options" [globals]="globals" [output]="transRollupoutput(input)"></rts>
// <rollup *elseif="input" [input]="transRollupInput(input)" [sourcemap]="sourcemap" [plugins]="transPlugins(ctx)" [external]="external"
// [options]="options" [globals]="globals" [output]="transRollupoutput(input)"></rollup>
// <asset *if="input.uglify" [src]="getBundleSrc(input)" [dist]="toModulePath(input)" [sourcemap]="sourcemap | path:'./'" ></asset>
// <asset *if="input.moduleName || input.target" [src]="toOutputPath('package.json')" [dist]="outDir">
// <asset.pipes>
// <jsonEdit [json]="json($event, input)"></jsonEdit>
// </asset.pipes>
// </asset>
// </sequence>
// `
})
], TsLibPackBuilder);
export { TsLibPackBuilder };
//# sourceMappingURL=../sourcemaps/builds/TsLibPackBuilder.js.map