コマンドラインにgulp
を入力したときに完全に実行されるgulpfile.jsがあります。
gulp
bashコマンドは、グローバルにインストールされたgulpのpackage.json >> bin >> gulp
で指定されたjsファイルを呼び出すだけです。
node gulpfile.js
を入力するだけで、グローバルにインストールされたgulpなしでgulpfileを実行します。これは、gulpがローカルにインストールされ、gulpfile.js
Cliツールなしでgulpを使用すると、gulpを他のnpmプラグインの一部として非常に簡単に使用できるようになります。
注:
別のgulpfile.jsが必要なのは、元のgulpfile.jsがgulp cliツールを介して起動された場合、元のgulpfile.jsから動作するためです。
質問:
グローバルcli gulpツールを使用せずにgulpを実行/要求する最良の方法は何ですか(// edit:またはローカルにリンクする)。例えばgulpがローカルにインストールされた依存関係のみである場合、別のjsファイルから単純に要求することができます。 (言い換えれば、CLIの介入なしにJS内からプログラムでgulpを開始する)
Package.jsonで
"scripts": {
"gulp": "gulp"
},
そして、このコマンドnpm run gulp
また、npmはコマンドに追加のパラメーターを渡す機能を提供します。これはnpm> = 2.0の場合のみです
更新:ビンリンクなし
node_modules/.bin/gulp
またはnode_modules/gulp/bin/gulp.js
ファイルを使用して、gulpを開始する方法を確認します(129行目は興味深いです)
私はこれがうまくいくと思う:
var gulp = require('gulp');
gulp.task('default', function() {
console.log('do something');
});
gulp.start.apply(gulp, ['default']);
ローカルにインストールするとき(npm install --save-dev gulp
)、./node_modules/.bin/gulp all
を呼び出すだけで実行できます。
または、npm
スクリプトを定義して、npm run gulp
で実行できます
これをpackage.json
に追加することにより
"scripts": {
"gulp": "gulp"
}
Package.jsonに次を追加します。
"scripts": {
"gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>"
}
npm run gulpと入力してコマンドラインから実行します。
これにより、gulpをグローバルにインストールするという依存関係がなくなります。
一方、npm> = 5.2.0以降。 「npx」でそれを行うことができます:
npx gulp
./node_modules/.binのバイナリを実行します
ちなみに、一時的にのみインストールされ、実行されてから削除される、インストールされていないツールを実行する機能があります。
KatMarchánの投稿をチェックアウトしてください: npxの紹介:npmパッケージランナー
最も直接的な答えは次のとおりだと思います。
node ./node_modules/gulp/bin/gulp.js
はい、npmスクリプトへの追加は機能しますが、これは、レポジトリから既存のコードに対してgulpタスクを実行しようとしていて、package.jsonを簡単に変更できない自動ビルドのような状況では役に立ちません。
一般的に、Sander Visserの答えはおそらく「最良」ですが、これはどこでも実装できる最低レベルの呼び出しです。