@ts-ioc/pack
type task framework, base on AOP, Ioc container, via @ts-ioc. dev pack activities.
Last updated 7 months ago by houjun .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @ts-ioc/pack 
SYNC missed versions from official npm registry.

packaged @ts-ioc/pack

@ts-ioc/pack is project build pack tools, base on AOP, Ioc container, via @ts-ioc. file stream pipes activities.

This repo is for distribution on npm. The source for this module is in the main repo. Please file issues and pull requests against that repo.

Install

  1. install modules:
npm install @ts-ioc/pack
  1. install cli | build pack:

cli in global

npm install -g '@ts-ioc/cli'

build pack

npm install '@ts-ioc/pack'

use command: pk run [taskfile.ts], pk run [taskfile.js]

You can import modules:

Doc

Define Task

  • Single task
@Task('test')
class SimpleTask extends AbstractTask implements ITask {

    constructor(name: string) {
        super(name);
    }

    run(): Promise<any> {
        // console.log('before simple activity:', this.name);
        return Promise.resolve('simple task')
            .then(val => {
                console.log('return simple activity:', val);
                return val;
            });
    }
}

  • control flow activities.

see control flow codes

  • Task module


Run task

1.
let wf = new Worflow(moudles)
2.
Workflow.create( moudles)
    .bootstrap(<IConfigure>{
        ...
        activity:...
    });
3.
Workflow.create( moudles)
    .bootstrap(TestTask);
4.
Workflow.create()
    .sequence(TestTask, TsCompile, <IConfigure>{
        ...
        activity: ...
    });
5.
Workflow.create()
    .run(...[TestTask, TsCompile, <IConfigure>{
        ...
        activity: ...
    }]);


Simples

import { Workflow, IfActivityToken, SequenceActivityToken, ExecuteToken } from '@ts-ioc/activities';
import { INodeActivityContext, Asset, BuildModule, AssetToken, ShellModule, TransformModule, NodeActivityContext } from '@ts-ioc/build';
import * as through from 'through2';
import * as path from 'path';
import { isPackClass, PackModule } from '@ts-ioc/pack';

@Asset({
    pipes: [
        {
            ifBody: {
                sequence: [
                    {
                        src: ['packages/**/package.json', '!packages/activities/**/package.json', '!node_modules/**/package.json'],
                        pipes: [
                            ctx => versionSetting(ctx)
                        ],
                        dest: 'packages',
                        activity: AssetToken
                    },
                    {
                        src: ['package.json'],
                        pipes: [
                            ctx => versionSetting(ctx)
                        ],
                        dest: '.',
                        activity: AssetToken
                    }
                ],
                activity: SequenceActivityToken
            },
            if: ctx => ctx.getEnvArgs().setvs,
            activity: IfActivityToken
        },
        {
            execute: (ctx: INodeActivityContext) => {
                let envArgs = ctx.getEnvArgs();
                let packages = ctx.getFolders('packages').filter(f => !/activities/.test(f)); // (f => !/(annotations|aop|bootstrap)/.test(f));

                let activities = [];
                packages.forEach(fd => {
                    let objs = require(path.join(fd, 'taskfile.ts'));
                    let builder = Object.values(objs).find(v => isPackClass(v));
                    activities.push(builder);
                });
                if (envArgs.deploy) {
                    let cmd = 'npm publish --access=public'; // envArgs.deploy ? 'npm publish --access=public' : 'npm run build';
                    let cmds = packages.map(fd => {
                        return `cd ${fd} && ${cmd}`;
                    });
                    console.log(cmds);
                    activities.push({
                        shell: cmds,
                        activity: 'shell'
                    });
                }
                return {
                    contextType: NodeActivityContext,
                    sequence: activities,
                    activity: SequenceActivityToken
                }
            },
            activity: ExecuteToken
        }
    ]
})
export class BuilderIoc {
}

@Asset({
    pipes: [
        {
            if: ctx => ctx.getEnvArgs().setvs,
            ifBody: {
                src: ['packages/activities/**/package.json', '!node_modules/**/package.json'],
                pipes: [
                    (ctx) => actVersionSetting(ctx)
                ],
                dest: 'packages/activities',
                activity: AssetToken
            },
            activity: IfActivityToken
        },
        {
            execute: (ctx: INodeActivityContext) => {
                let envArgs = ctx.getEnvArgs();
                let packages = ctx.getFolders('packages/activities');

                let activities = [];
                packages.forEach(fd => {
                    // console.log(path.join(fd, 'taskfile.ts'));
                    let objs = require(path.join(fd, 'taskfile.ts'));
                    let builder = Object.values(objs).find(v => isPackClass(v));
                    activities.push(builder);
                });
                if (envArgs.deploy) {
                    let cmd = 'npm publish --access=public';
                    let cmds = packages.map(fd => {
                        return `cd ${fd} && ${cmd}`;
                    });
                    console.log(cmds);
                    activities.push({
                        shell: cmds,
                        activity: 'shell'
                    });
                }
                return {
                    sequence: activities,
                    activity: SequenceActivityToken
                }
            },
            activity: ExecuteToken
        }
    ]
})
export class BuilderActivities {
}



Workflow.create()
    .use(PackModule)
    .bootstrap({
        contextType: NodeActivityContext,
        if: ctx => ctx.getEnvArgs().act,
        ifBody: BuilderActivities,
        elseBody: BuilderIoc,
        activity: IfActivityToken
    });



Documentation github

Documentation is available on the type-task docs site.

License

MIT © Houjun

Current Tags

  • 4.0.5                                ...           latest (7 months ago)

26 Versions

  • 4.0.5                                ...           7 months ago
  • 4.0.4                                ...           7 months ago
  • 4.0.3                                ...           7 months ago
  • 4.0.1                                ...           7 months ago
  • 4.0.0-rs2                                ...           7 months ago
  • 4.0.0-rs1                                ...           7 months ago
  • 4.0.0-rs                                ...           7 months ago
  • 4.0.0-beta30                                ...           7 months ago
  • 4.0.0-beta28                                ...           7 months ago
  • 4.0.0-beta27                                ...           8 months ago
  • 4.0.0-beta26                                ...           8 months ago
  • 4.0.0-beta25                                ...           8 months ago
  • 4.0.0-beta24                                ...           8 months ago
  • 4.0.0-beta23                                ...           8 months ago
  • 4.0.0-beta22                                ...           8 months ago
  • 4.0.0-beta20                                ...           8 months ago
  • 4.0.0-beta19                                ...           8 months ago
  • 4.0.0-beta18                                ...           8 months ago
  • 4.0.0-beta17                                ...           8 months ago
  • 4.0.0-beta16                                ...           8 months ago
  • 4.0.0-beta13                                ...           8 months ago
  • 4.0.0-beta12                                ...           8 months ago
  • 4.0.0-beta8                                ...           8 months ago
  • 4.0.0-beta7                                ...           8 months ago
  • 4.0.0-beta6                                ...           8 months ago
  • 4.0.0-beta5                                ...           8 months ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dev Dependencies (0)
None
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |