@nqounetです。
Node.jsは使っていて驚くことがいくつかあります。
ひとつはモジュールのバージョンアップが早いこと。
ひとつはモジュールが依存するモジュールを独自に持つこと。
モジュールの更新が早い
npmで-g
を付けてインストールしたファイル群はnpm update -g
でアップデートできますが、その量がとても多いです。
ただ、ザーッと見ていると同じモジュールも何度か見かけるような気がしました。
依存モジュールを独自に持っている
で、ログを見たり、インストールしたディレクトリを見ると、package.json
に書いてあるモジュール群は、全てそのディレクトリに入っています。
例えば、gruntの依存モジュールでasync.jsがありますが、grunt-contrib-connectもasync.jsに依存しています。
手元でその2つのファイルを見てみると、バージョンが異なっています。
gruntが依存している方は、0.1.22、grunt-contrib-connectが依存している方は、0.2.10でした。
依存するモジュールをバージョンを固定したまま実行できるように、ローカルにモジュールを保持する仕組みになっているようですね。
勘違いしていたこと
gruntを使っていてあまりにも頻繁に沢山のモジュールをダウンロード、インストールするので嫌だなと思い、衝動的にいろいろなものを-g
オプションでインストールした(例えばgrunt-contrib-connectとか)のですが、全く(?)意味がありませんでした。
グローバルの方にそのモジュールがあっても、結局はローカルに適切なバージョンのモジュールをインストールするので使われません。
むしろ、npm update -g
の時に(使ってもいないのに)無駄にバージョンアップするため、余計なダウンロードが発生していました。
開発環境をアップデートする
yo webapp
で作成した環境にはpackage.json
が既に作成されていますが、モジュールのバージョンは更新されているものが多いです。
例えば、gruntは、指定されているバージョンは0.4.1ですが、アップデートすれば0.4.4が入ります。
アップデートし、かつ、package.jsonも更新するにはnpm update --save-dev
で良いのですが、この場合、何故そうなるのか不明ですがgruntはアップデートされないようです。
そういうのをいちいち気にするのがアレなので、簡単なスクリプトを書いて実行するようにしました。
|
|
地味に便利です。
手元で静的ファイルを更新する考え方
ウェブサイトをgruntで管理していて思うのですが、設定ファイルとコマンドでウェブサイトを更新するという考え方は別に新しいわけじゃないんですよ。
ただ、できることが多種多様になって、かつ、それが簡単なスクリプトを書いて組み合わせられる、というのが良いですね。
ローカル環境で編集したものをウェブに公開する、ということが、簡単にカスタマイズできるのはほんとうに素晴らしいことだと思います。