プログラミング

npmパッケージを作成し公開するには

npmパッケージを作成しインターネットに公開、”npm install”や”npm install –global”でダウンロード、インストール可能にする方法のガイドです。

npmパッケージの公開前に、node.jsプログラムが完成していること、package.jsonを作成していることを確認してください。

最初に、npmにログインします。

npm login

npmのアカウントを持っていない場合は作成します。以下より作成します。

npm

以下コマンドでカレントディレクトリのプログラムをnpmパッケージとして公開します。

npm publish

npmパッケージが正常に公開されているかどうかを確認するには以下コマンドを使用します。

npm show <package-name>

例として、僕の作成したnpmパッケージでは以下のように表示されます。

$ npm show notification-cli

notification-cli@1.0.4 | BSD-3-Clause | deps: 4 | versions: 5
Minimalistic Command Line Notification Application under 50 Lines
https://github.com/yuis-ice/notification-cli

keywords: notifications, nodejs, cli, reminder, command-line, scheduler, cli-app, command-line-tool, time-management

bin: noc

dist
.tarball: https://registry.npmjs.org/notification-cli/-/notification-cli-1.0.4.tgz
.shasum: 2480a8ea01264fb3ceebe85563c7da7faa572541
.integrity: sha512-rr2nsXMp25wFpVQ..qECk3o5lJQu8lw==     
.unpackedSize: 7.4 kB

dependencies:
commander: ^6.2.1     moment: ^2.29.1       node-notifier: ^9.0.0 node-schedule: ^2.0.0

maintainers:
- yuis-ice <yuis.twitter+main@gmail.com>

dist-tags:
latest: 1.0.4

published 4 days ago by yuis-ice <yuis.twitter+main@gmail.com>

(参考)

npm packages not showing up – Google Search
node.js – I published one package on npm, but it’s not showing in the search list when i am going to search – Stack Overflow

npmパッケージの公開の仕方は以上ですが、以下に例として僕の作成したnpmパッケージのpackage.jsonを置いておきます。以下の使用およびコピーはライセンス下において自由です。参考にしてださい。
また、以下にて、それぞれのプロパティの説明をします。

{
  "name": "notification-cli",
  "version": "1.0.4",
  "description": "Minimalistic Command Line Notification Application under 50 Lines",
  "main": "noc",
  "bin": {
    "noc": "./noc"
  },
  "dependencies": {
    "commander": "^6.2.1",
    "moment": "^2.29.1",
    "node-notifier": "^9.0.0",
    "node-schedule": "^2.0.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "homepage": "https://github.com/yuis-ice/notification-cli",
  "repository": {
    "type": "git",
    "url": "https://github.com/yuis-ice/notification-cli.git"
  },
  "keywords": [
    "notifications",
    "nodejs",
    "cli",
    "reminder",
    "command-line",
    "scheduler",
    "cli-app",
    "command-line-tool",
    "time-management"
  ],
  "author": "Fumiya Arisaka <yuis.twitter@gmail.com>",
  "license": "BSD-3-Clause"
}

// description

descriptionプロパティはnpmウェブサイト上に表示されます。SEOとして若干の効果があります。時間があるなら付けておきましょう。

// bin

binプロパティはnpmをグローバルパッケージとしてインストールした場合に参照されるデータです。実行ファイルを指定します。
これを指定しないとnpm install --globalのコマンドを実行しパッケージをインストールしてもコマンドが実行できません。(npmグローバルパッケージのパスに通っていないため)

"bin": {
  "noc": "./noc"
},

// homepage
// repository
// keywords

これらのプロパティはnpmウェブサイト上に表示されます。SEOとして効果があります。
Githubページにリンクソースを送りたい場合は”repository”プロパティを忘れないようにしましょう。
npmウェブサイト上での検索において”keywords”はそれなりのSEO効果があります。

これにより、以下のコマンドにより公開されたnpmパッケージをグローバルにインストールし、コマンドとして実行可能にします。

npm i --global notification-cli

(僕の作成したnpmパッケージ、およびpackage.json: notification-cli)

yuis-ice/notification-cli: Minimalistic Command Line Notification Application under 50 Lines
notification-cli/package.json at main · yuis-ice/notification-cli

(その他参考になりそうなnpmパッケージ、およびpackage.json)

tldr-node-client/package.json at master · tldr-pages/tldr-node-client
node-sleep/package.json at master · erikdubbelboer/node-sleep