@tsdi/pack
Version:
@tsdi/pack is simple build tasks, base on AOP, Ioc container, via @tsdi. dev build pack activities.
168 lines (166 loc) • 8.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TsLibPackBuilder = void 0;
var tslib_1 = require("tslib");
var ioc_1 = require("@tsdi/ioc");
var components_1 = require("@tsdi/components");
var activities_1 = require("@tsdi/activities");
var LibPackBuilder_1 = require("./LibPackBuilder");
var exps_1 = require("../exps");
var rename = require('gulp-rename');
var uglify = require('gulp-uglify-es').default;
/**
* build ts project by rollup
*
* @export
* @class TsLibPackBuilder
* @extends {LibPackBuilder}
* @implements {AfterInit}
*/
var TsLibPackBuilder = /** @class */ (function (_super) {
tslib_1.__extends(TsLibPackBuilder, _super);
function TsLibPackBuilder() {
return _super !== null && _super.apply(this, arguments) || this;
}
TsLibPackBuilder.prototype.vaidts = function (input) {
var inputs = input.input || this.mainFile;
if (inputs) {
return ioc_1.isArray(inputs) ? inputs.some(function (i) { return exps_1.tsFileExp.test(i); }) : exps_1.tsFileExp.test(inputs);
}
return false;
};
TsLibPackBuilder.ρAnn = function () {
return { "name": "TsLibPackBuilder", "params": { "vaidts": ["input"] } };
};
tslib_1.__decorate([
components_1.Input(),
tslib_1.__metadata("design:type", String)
], TsLibPackBuilder.prototype, "mainFile", void 0);
tslib_1.__decorate([
components_1.Input(),
tslib_1.__metadata("design:type", Object)
], TsLibPackBuilder.prototype, "beforeCompile", void 0);
TsLibPackBuilder = tslib_1.__decorate([
activities_1.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_1.Activities.if,
condition: function (ctx, bind) { return bind.getScope().vaidts(ctx.getInput()); },
body: {
activity: 'rts',
input: function (ctx, bind) { return bind.getScope().transRollupInput(ctx.getInput()); },
sourcemap: 'binding: sourcemap',
plugins: function (ctx, bind) { return bind.getScope().transPlugins(ctx); },
external: 'binding: external',
options: 'binding: options',
globals: 'binding: globals',
output: function (ctx, bind) { return bind.getScope().transRollupoutput(ctx.getInput()); }
}
},
{
activity: activities_1.Activities.elseif,
condition: function (ctx) { return ctx.getInput().input; },
body: {
activity: 'rollup',
input: function (ctx, bind) { return bind.getScope().transRollupInput(ctx.getInput()); },
sourcemap: 'binding: sourcemap',
plugins: 'binding: transPlugins(ctx)',
external: 'binding: external',
options: 'binding: options',
globals: 'binding: globals',
output: function (ctx, bind) { return bind.getScope().transRollupoutput(ctx.getInput()); }
}
},
{
activity: activities_1.Activities.if,
condition: function (ctx) { return ctx.getInput().uglify; },
body: {
activity: 'asset',
src: function (ctx, bind) { return bind.getScope().getBundleSrc(ctx.getInput()); },
dist: function (ctx, bind) { return bind.getScope().toModulePath(bind.getInput()); },
sourcemap: 'binding: sourcemap | path:"./"',
pipes: [
function () { return uglify(); },
function () { return rename({ suffix: '.min' }); }
]
}
},
{
activity: activities_1.Activities.if,
condition: function (ctx) { return ctx.getInput().moduleName || ctx.getInput().target; },
body: {
activity: 'asset',
src: function (ctx, bind) { return bind.getScope().toOutputPath('package.json'); },
dist: 'binding: outDir',
pipes: [
{
activity: 'jsonEdit',
json: function (json, bind) {
var input = bind.getInput();
var scope = bind.getScope();
// to replace module export.
if (input.target) {
json[input.target] = ['.', scope.getTargetFolder(input), input.main || 'index.js'].join('/');
}
var outmain = ['.', scope.getModuleFolder(input), input.outputFile || 'index.js'].join('/');
if (ioc_1.isArray(input.moduleName)) {
input.moduleName.forEach(function (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);
return TsLibPackBuilder;
}(LibPackBuilder_1.LibPackBuilder));
exports.TsLibPackBuilder = TsLibPackBuilder;
//# sourceMappingURL=../sourcemaps/builds/TsLibPackBuilder.js.map