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

npm publishする時の注意点

More than 1 year has passed since last update.

npm(nodejsのパッケージマネージャー)には簡単に自作のモジュールをuploadできます。

初めてのnpm パッケージ公開 - Qiita

こちらの記事で初回アップロードの手順は詳細に書いてあります。

初回はもちろん、バージョンアップして2回目以降のnpm publishをする時の注意点を記しておきます。

手順

  • test
  • READMEの確認
  • TODOの確認
  • ソースコードのbuild
  • GitHubにpushしてCI(travis等)のtest
  • npm versionの更新
  • npm publish

test

とにかくtest通ってなければ話になりません。npm run test

READMEの確認

コードをガシガシ書いてテストが通ったら満足してしまいがちですが、公開するならREADMEに新機能の説明を追加するのを忘れてはいけません。

TODOの確認

私は開発中に思いついた機能、メソッド名の変更、バグなどに気づいたらソースコードにTODOを埋め込むようにしています。

エディタにもよりますが、visualstudio-codeでは色んなTODO管理の拡張機能がありますのでそれを使います。

Search results - todo | Visual Studio Code , Visual Studio Marketplace

バージョンアップ公開時にはこれらのTODOを全部消化するか、もしくは別ファイル(たとえばTODO.md)に避難して、コード中のTODOを全部消します。

ソースコードのbuild

testが通ったコードをそのまま公開する場合もあると思いますが、developmentproductionのように開発用と本番用を分けている場合は本番用のビルドを忘れないように。

当然リビルドしたコードがtestを通るかの確認も。

GitHubにpushしてCI(travis等)のtest

私は「GitHubはベータ版も公開する場所」と考えています。

npmにpublishしたモジュールは以下のコマンドでインストールできます。

npm install <パッケージ名>

しかし以下のコマンドを使うと、GitHubから直接インストールできます。

npm install <GitHubのユーザー名>/<リポジトリ名>

とはいえ後者はあまり使われていないと思います。

あくまでも「npmのmoduleはnpmjs.comから取得する」というのが基本です。

  • npmはStableバージョンのみ置く
  • GitHubはStableもBetaも置く

と私は考えています。

なのでnpm publishする前に必ずtravisでtestを通ることを確認します。

mick-whats/ohlc-node - Travis CI

package.jsonに依存するmoduleをdependenciesに書き忘れていた(install時に --saveオプションを忘れていた)場合など、localではtestを通っても本番では失敗するかもしれません。なので必ずCIで確認を。

npm versionの更新

npm publishを実行したときに、package.jsonのversionが更新されていないとエラーになります。

これを防ぐためにversionを更新するためのコマンドがあります。

> npm version major
# v1.0.0 から v2.0.0 へ変更

> npm version minor
# v1.0.0 から v1.1.0 へ変更

>npm version patch
# v1.0.0 から v1.0.1 へ変更

これらのコマンドを実行するとgit tag <version>git commitまで実行してくれます。

npm publish

ここまでOKならいよいよnpm publishします。おつかれさまでした。

__mick
nodejs,coffee-script等で遊んでいます。 https://github.com/mick-whats
https://twitter.com/mick_x_
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