UNPKG

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