web-dev-qa-db-ja.com

グローバルgulp // edit:なしでbin jsファイルにリンクせずにgulpを使用する

コマンドラインに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を開始する)

16
philkunz

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']);
35
Sander Visser

ローカルにインストールするとき(npm install --save-dev gulp)、./node_modules/.bin/gulp allを呼び出すだけで実行できます。

または、npmスクリプトを定義して、npm run gulpで実行できます

これをpackage.jsonに追加することにより

"scripts": {
  "gulp": "gulp"
}
8
t.niese

Package.jsonに次を追加します。

"scripts": {
  "gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>" 
}

npm run gulpと入力してコマンドラインから実行します。

これにより、gulpをグローバルにインストールするという依存関係がなくなります。

5
Megha Bisht

一方、npm> = 5.2.0以降。 「npx」でそれを行うことができます:

npx gulp

./node_modules/.binのバイナリを実行します

ちなみに、一時的にのみインストールされ、実行されてから削除される、インストールされていないツールを実行する機能があります。

KatMarchánの投稿をチェックアウトしてください: npxの紹介:npmパッケージランナー

5
tweini

最も直接的な答えは次のとおりだと思います。

node ./node_modules/gulp/bin/gulp.js

はい、npmスクリプトへの追加は機能しますが、これは、レポジトリから既存のコードに対してgulpタスクを実行しようとしていて、package.jsonを簡単に変更できない自動ビルドのような状況では役に立ちません。

一般的に、Sander Visserの答えはおそらく「最良」ですが、これはどこでも実装できる最低レベルの呼び出しです。

2
Doug Lampe