@oliveryasuna/ts-task-merge-tasks
v1.0.1
Published
A ts-task plugin that merges tasks from other config files.
Downloads
375
Maintainers
Readme
plugin-merge-tasks
A ts-task plugin that merges tasks from other config files.
Install
bun add --global @oliveryasuna/ts-task-merge-tasks
# or pnpm
pnpm add --global @oliveryasuna/ts-task-merge-tasks
# or npm
npm install --global @oliveryasuna/ts-task-merge-tasks
# or yarn
yarn add --global @oliveryasuna/ts-task-merge-tasksUsage
A common use case is to merge tasks in a monorepo. ts-task becomes a lightweight monorepo orchestrator.
// `tasks.config.ts`
import {defineConfig} from '@oliveryasuna/ts-task';
import {mergeTasks} from '@oliveryasuna/ts-task-merge-tasks';
export default defineConfig({
plugins: [await mergeTasks(
'packages/webapp/tasks.config.ts',
'packages/api/tasks.config.ts',
'packages/shared/tasks.config.ts'
)]
});
// `packages/webapp/tasks.config.ts`
import {defineConfig, inDir, namespace} from '@oliveryasuna/ts-task';
import path from 'node:path';
import {mergeTasks} from '@oliveryasuna/ts-task-merge-tasks';
import {build as sharedBuild} from '../shared/tasks.config';
const build = namespace('webapp').task({
//...
deps: [inDir(path.resolve(import.meta.dirname, '../shared'), sharedBuild)]
});
const lint = namespace('webapp').task(...);
const test = namespace('webapp').task(...);
export default defineConfig({tasks: [build, lint, test]});
// `packages/api/tasks.config.ts`
import {defineConfig, inDir, namespace} from '@oliveryasuna/ts-task';
import path from 'node:path';
import {mergeTasks} from '@oliveryasuna/ts-task-merge-tasks';
import {build as sharedBuild} from '../shared/tasks.config';
const build = namespace('api').task({
//...
deps: [inDir(path.resolve(import.meta.dirname, '../shared'), sharedBuild)]
});
const lint = namespace('api').task(...);
const test = namespace('api').task(...);
export default defineConfig({tasks: [build, lint, test]});
export {build};
// `packages/shared/tasks.config.ts`
import {defineConfig} from '@oliveryasuna/ts-task';
import {mergeTasks} from '@oliveryasuna/ts-task-merge-tasks';
const build = namespace('shared').task(...);
const lint = namespace('shared').task(...);
const test = namespace('shared').task(...);
export default defineConfig({tasks: [build, lint, test]});Execute the tasks with:
# From the root of the monorepo
tt webapp:build