Help us understand the problem. What is going on with this article?

gulp-cliはインストールすべきじゃないと、思うよ

More than 3 years have passed since last update.

プロジェクトでGulpを使用したい場合、グローバルにはgulp-cli、プロジェクトローカルにはgulpを入れなければならず、以下の2つのコマンドを打つことになります。

$ npm install gulp-cli -g
$ npm install gulp --save-dev

ここにおじさんは疑問をいだいてしまいました。

グローバルにインストールしてしまっていいのか? :confounded:

そうです。問題はnpm install gulp-cli -gです。先のやり方はGulp公式が推奨している方法であり、「gulp入門」と検索すれば同じ方法を紹介している記事が多くヒットするので一般的な方法であるのは間違いないです。しかし、この方法はタブーを犯しています。

何がタブーなのか? :hushed:

-gを使ってインストールするnpmモジュールは個々のプロジェクトが依存することの無い疎な状態であるべきだと私は考えます。もっと具体的に言うと、ローカルモジュールの実行の為にグローバルモジュールを実行するのは問題であると言えます。これはnpmモジュール全てに言えると思います。

どういった問題が起こるか? :fearful:

gulp-cliをグローバルにインストールしてしまうと、同じプロジェクトでも開発者によってgulp-cliのバージョンが違う場合が考えられます。gulp-cliは複数のバージョンに対応できる作りになっているものの、本当に大きな仕様変更が無いとは言い切れません。そうなれば今まで正常に動作していたプロジェクトも動かなくなりかねません。

じゃあどうしたらいいのよ? :cold_sweat:

gulp-cliのインストールをやめましょう。gulp-cliの主な機能はnode_modules配下のgulpコマンドへパスを通すことです。そんなことはわざわざgulp-cliを経由せずとも、もともとnpm-scriptsが同じ事をしてくれてるじゃあありませんか。

gulpfile.js
var gulp = require('gulp');

gulp.task('hoge', function() {
  console.info('ほげほげ!!');
});

例えば、こんなgulpfile.jsがあったとしたら、

package.json
{
  "scripts": {
    "hoge": "gulp hoge"
  }
}

こんな感じでnpm-scriptsを追加すれば、gulpfile.jsに書いたhogeタスクを実行できます。

$ npm run hoge
// => "ほげほげ!!"

これでプロジェクトがグローバルを犯すことのない疎な構造が出来上がりました!やったね:bow:

npm-scriptsの詳しい使い方については「Node.jsユーザーなら押さえておきたいnpm-scriptsのタスク実行方法まとめ」で解説しているのでご参考ください。

最後に :speech_balloon:

とは言ったものの少数派の意見なのでGulpの公式に屈服せざるおえない状況の方が多いと思います。是非皆さんのプライベートなプロジェクトなんかで試してみてください。

sawa-zen
Design Engineer / shree.js / three.js / React / SketchApp
http://sawa-zen.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした