1.0.4 • Published 5 years ago

gulp-monorepo-parallelizator v1.0.4

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Gulp monorepo parallelizator

semantic-release npm version

This utility allows automate paralelization of build and other actions in repositories with multiple projects depending from each other.

Example output of gulp --tasks for such setup would look like this:

└─┬ buildAll
  └─┬ <series>
    ├─┬ <parallel>
    │ ├── build-dependency3     // depends on nothing
    │ └── build-dependency5     // depends on nothing
    ├── build-dependency4       // depends on 5
    ├─┬ <parallel>
    │ ├── build-dependency2     // depends on 4, 5
    │ └── build-dependency7     // depends on 4, 3
    ├─┬ <parallel>
    │ ├── build-dependency1     // depends on 2, 3
    │ └── build-dependency6     // depends on 2, 3
    └── build-dependency0       // depends on 1, 3

Installation

npm i --save-dev gulp-monorepo-parallelizator

Usage

All sub-peojects MUST have package.json file with other projects listed as either dependencies or peerDependencies.

Example gulpfile.js:

const gulp = require('gulp');
const gulpParallel = require('gulp-monorepo-parallelizator');

// Define array of task names and sub-project folders with package.json files
const buildProjects = [
    { task: 'build-dependency0', folder: '../../projects/dependency0' },
    { task: 'build-dependency1', folder: '../../projects/dependency1' },
    { task: 'build-dependency2', folder: '../../projects/dependency2' },
    { task: 'build-dependency3', folder: '../../projects/dependency3' },
    { task: 'build-dependency4', folder: '../../projects/dependency4' },
    { task: 'build-dependency5', folder: '../../projects/dependency5' },
    { task: 'build-dependency6', folder: '../../projects/dependency6' },
    { task: 'build-dependency7', folder: '../../projects/dependency7' },
];

// Setup build tasks for each project - in this case - run Angular CLI build as child process
buildProjects.forEach(v => {
    gulp.task(v.task, () => exe(`npm run ng -- build ${v.name}`))
});

// Setup 'buildAll' task which runs all non-dependant builds in parallel 
gulp.task('buildAll', gulpParallel(buildProjects));

Released semantically

See here: https://semantic-release.gitbook.io/semantic-release/

Commit format:

  • fix(pencil): Patch Release
  • feat(pencil): Minor Feature Release
  • perf(pencil): Major Breaking Release
  • BREAKING CHANGE: Major Breaking Release

Created by

Karolis Jocevičius - Twitter, Github

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago