npm install -g gulpをインストールしてもローカルgulpインストールが見つかりません


88

私はgulpをインストールしようとしました

npm install -g gulp

出力はこのようなもののようです。(私はいくつかのログをスキップしました)

npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/lodash._htmlescapes
/usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js
gulp@3.6.2 /usr/lib/node_modules/gulp
├── tildify@0.2.0
├── pretty-hrtime@0.2.1
├── deprecated@0.0.1
├── archy@0.0.2
├── semver@2.2.1
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── orchestrator@0.3.3 (sequencify@0.0.7)
├── liftoff@0.9.8 (extend@1.2.1, minimist@0.0.8, resolve@0.6.3, findup-sync@0.1.3)
├── vinyl-fs@0.1.4 (graceful-fs@2.0.3, map-stream@0.1.0, mkdirp@0.3.5, vinyl@0.2.3, glob-stream@3.1.9, glob-watcher@0.0.6)
└── gulp-util@2.2.14 (lodash._reinterpolate@2.4.1, dateformat@1.0.7-1.2.3, minimist@0.0.8, vinyl@0.2.3, multipipe@0.0.2, through2@0.4.1, lodash.template@2.4.1)

上記のスクリプトでは、/ usr / bin / gulp-> /usr/lib/node_modules/gulp/bin/gulp.jsという行を見ることができます。だから私はグローバルにぐちゃぐちゃになるはずですが、私はこのエラーが出ます。

No local gulp install found in /var/www/ksapp

なぜこのエラーが発生するのか考えてみてください。

ありがとう

回答:


103

ドキュメントで指摘したように、あなたは世界的にそれをインストール(あなたがそれをした)すべきであるプロジェクトのdevのDEPS(ローカル)に追加します。

npm install gulp --save-dev

1
Gulpがプロジェクトのローカルフォルダーにノードファイルをコピーしない可能性はありますか?Gulpがグローバルにインストールされているので、私が理解しているように、このコマンドはGulpのローカルコピーを作成します。
Vladislav Rastrusny 2014

重要なのは、ローカルインストールは、システムインストールがアップグレードされた場合でも、プロジェクトのビルドが中断しないことを保証することです(グローバルgulpインストールは、パスにバイナリコマンドを提供するためだけにあります)。これは、うなり声の場合と同じ状況です。
マングルドドイツ2015

12
私は定期的に使用するので、私はあまりにも、各プロジェクトフォルダ内のノードモジュールの完全なコピーを憎むnpm link gulp --save-dev
PAを。

1
いいですがnpm link gulp --save-dev--save-devパラメータを尊重しているとは思いません。
デレクグリア2015年

2
@PAを使用して他の回答に関するコメントを再度繰り返すのnpm link gulpは、悪い考えです。
sfarbota 2015年

35

私は同じ問題に直面しました。リンクを作成して解決しました

npm link gulp

8
別のコメントで述べたように、これは悪い考えです。gulpやgruntなどのビルドシステムは、特定のプロジェクトがビルド固有の特定のバージョンに依存できるように設計されています(したがって、グローバルシステムの状態やインストールされているバージョンに関係なくビルドされます)。gulpのグローバルバージョンとローカルバージョンをリンクしようとすると、足元で自分自身を撃ちます...
マングルドDeutz

@MangledDeutz私はこの特定のプロジェクトに一口をつなぐことに興味はありません。いくつかのビルドタスクを自動化するための小さなコマンドラインツールとして使用したいだけです。私のgulpfileはgitリポジトリの一部にはなりません。実際、このリポジトリを別のコンピューターに複製した場合、gulpを使用してこれらのタスクを自動化せず、別のツールを使用する可能性があります。nodeとnpmが存在しないふりをしたいのですが、gulpは/ usr / binにある小さなプログラムで、CWDでgulpfile.jsを探して魔法のように動作します。それでいいのなら、この答えは理にかなったことではありませんか?
Jack M

@JackMは、システム全体にインストールされているgulpのバージョンに応じて、そのgulpfile.jsで動作する場合と動作しない場合があるため(そして理由もなく「魔法のように」壊れる)、これはまだ妥当なことではありません...
Deutz

@MangledDeutzただし、ファイルを入力として受け入れるコマンドラインプログラムの場合はすべて同じです。
ジャックM

うん!この!グローバルバージョンが適切であるかどうかを開発者に決定させます!!
Peter Konga-Kamau

-2

/home/username/.npmディレクトリを確認します。おそらくファイルのgroups / ownerがrootです。ユーザー名に変更:

chown -R username.username /home/username/.npm

-2

最近、「ローカルgulpが見つかりません」というエラーメッセージが表示されました。グローバルnode_modulesディレクトリからgulpfile.jsが配置されているローカルプロジェクトディレクトリへのシンボリックリンクを作成することで、それを超えて作業することができました。


7
その後、ベースシステムをアップグレードしても中断しない、ローカルで利用可能なビルドシステムの目的を無効にします。これは確かに悪い考えであり、著者の意図に反します...
Mangled Deutz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.