npm publishできるかを判定するコマンドラインツール: can-npm-publish
azu/can-npm-publish: A command line tool that check to see if npm publish is possible.というツールを書きました。
名前の通り指定したパッケージ(pacakge.json)を見て、そのパッケージのそのバージョンがnpm publish可能かどうかを判定してくれます。
npm publish可能かのチェックリスト
具体的には次のすべての条件を満たした時にpublishが可能と判断します。
- [x] Check that the package's name is valid
- validate-npm-package-name
- 最近変更されたパッケージ名の命名規則もチェックされます
- The npm Blog — New Package Moniker rules
- [x] Check that the package is not
private:true - [x] Check that
package@versionis already published in npm registry
たとえば、すでに同じバージョンがpublish済みの場合はexit statusが1を返します。
# in almin/
$ can-npm-publish --verbose
almin@0.13.10 is already published
$ echo $?
1
また、チェックにはnpm viewコマンドを使っていて、pacakge.jsonにpublishConfigが設定されていればprivateのregistryでも動作します。
つかいみち
ものすごいシンプルな使い所だとnpm publishとcan-npm-publishを&&で実行するパターンです。
can-npm-publish && npm publish
もっと具体的にはlernaのようにまとめて、pacakges/*したのパッケージをpublishしたときに、lernaは一つでもpublishに失敗すると途中で止まってしまうので、can-npm-publishと組み合わせることで、publish可能なものだけをpublishできます。
lerna exec --bail=false -- "can-npm-publish && npm publish"
元々次のIssueのワークアラウンドとして作りました
Install
npmでインストールできます。
npm install can-npm-publish
Usage
Usage
$ can-npm-publish [directory|pacakge.json path]
Options
--verbose show detail of errors
Examples
$ can-npm-publish
$ echo $? # 0 or 1
すべてのチェックが通った場合はexit statusが0になります。
何かがおかしい場合はexit statusが1となります。
何がおかしいのかの理由を知りたい場合--verboseオプションを利用できます。
$ can-npm-publish --verbose
almin@0.13.10 is already published
$ echo $?
1
リポジトリ
お知らせ欄
次に書くかもしれない記事候補
興味がありましたらIssues · efcl/efcl.github.ioからご意見下さい