1 | const logger = require('../logger');
|
2 | const taskify = require('../cli-task');
|
3 | const runPackage = require('../run-package');
|
4 |
|
5 | function run(packages = [], script) {
|
6 |
|
7 | const filteredPackages = packages.filter(({ manifest }) => {
|
8 | return manifest.scripts && manifest.scripts[script];
|
9 | });
|
10 |
|
11 | logger.debug(
|
12 | `Found ${filteredPackages.length} packages with script "${script}"`,
|
13 | );
|
14 |
|
15 |
|
16 | return filteredPackages.map(pkg => {
|
17 | const apply = () => runPackage('npm', ['run', script], pkg.location);
|
18 | return { pkg, apply };
|
19 | });
|
20 | }
|
21 |
|
22 | exports.task = run;
|
23 |
|
24 | exports.register = program => {
|
25 | program
|
26 | .command('run <script>')
|
27 | .description(
|
28 | 'Runs an npm script in each package that contains that script.',
|
29 | )
|
30 | .action(taskify(run));
|
31 | };
|