ローカルにインストールしたnpmパッケージの実行は、npxコマンドを利用するのが簡単です。以下のgulpfile.jsでテストします。各タスクのfunctionの引数のdoneとfunction内のdone();の処理はcallbackで、タスクの処理の終了を意味します。callbackがないと処理が終了せずエラーになります。
//gulpfile.js
const gulp = require('gulp');
//test01
function funcDefaultTask(done) {
console.log('message-01');
done();
}
//test02
function funcTask01(done) {
console.log('message-02');
done();
}
//test03
function funcTask02(done) {
console.log('message-03');
done();
}
//gulp
gulp.task('default', funcDefaultTask);
//gulp task01
gulp.task('task01', funcTask01);
//gulp task02
gulp.task('task02', funcTask02);
//gulp task03
gulp.task('task03', gulp.series(funcDefaultTask, funcTask01, funcTask02));
npxでgulpを実行する際、gulpのタスク名を指定せずに実行すると、gulpfile.js内のtaskメソッドの第一引数が「default」のタスクのみ実行します。default以外のタスクを実行する場合は「npx gulp taskメソッドの第一引数」のようにタスク名を指定して実行します。
npx gulp
message-01
npx gulp task01
message-02
npx gulp task02
message-03
npx gulp task03
message-01
message-02
message-03
今度はgulpをnpxではなくnpm run-scriptを利用して実行します。まずpackage.jsonのscriptsフィールドを"スクリプト名": "コマンド"のように複数記述します。npm init直後に作成されるtestは削除して問題ありません。
//package.json
//変更前(npm init直後)
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
},
}
↓
//変更後
{
"scripts": {
"default": "gulp",
"task01": "gulp task01",
"task02": "gulp task02",
"task03": "gulp task03",
"start": "gulp task03"
},
}
次にpackage.jsonのscriptsフィールドを、npm run スクリプト名のように記述して実行します。
npm run default
message-01
npm run task01
message-02
npm run task02
message-03
npm run task03
message-01
message-02
message-03
npm run start
message-01
message-02
message-03
なお最後のnpm run startのstartは、予約された特別なスクリプト名です。npm startのように短縮形のコマンドでも実行が可能です。
npm start
message-01
message-02
message-03





