NPMにCLIプロジェクトを発行する


この投稿では、私の小さな静的サイトジェネレータツールをリリースします.OSD_SSG , to NPM パッケージマネージャー.

パッケージバージョンの割り当て
パッケージを公開する前に、次のようにユニークなバージョンを割り当てる必要がありますSemantic versioning 要件多くの依存関係を持つシステムでは、依存関係の仕様が厳しすぎたり、ゆるくなったりすると、依存関係のある地獄の危険にさらされます.意味論的バージョン管理は、どのようにバージョンが割り当てられて、増加するかを標準化することによって、問題の解決として導入されました.x . y . zのバージョン形式を考えてください.バグ修正は、パッチのバージョンは、後方互換性のあるAPIの追加/変更増加マイナーバージョン、および後方互換性のないAPIの変更は、主要なバージョンをインクリメントAPI APIに影響を与えません.

ローカルファイルへのコマンド名のマッピング
その名前でプロジェクトを呼び出し可能にするには、メインエントリファイルをbin インpackage.json . 私のプロジェクトでは、JavaScriptをビルドしましたindex ファイルを実行可能です.
  "main": "./lib/src/index.js",
  "bin": {
    "osd_ssg": "./lib/src/index.js"
  },
実行可能ファイルの環境を指定する
// add this to the top of the index file to specify the environment it rune on 
#!/usr/bin/env node

CLIをローカルでテストする
npm-link 私たち自身のパッケージをインストールする前にそれをテストするために便利です.これを実行するとグローバルにシンボリックリンクが作成されますnode_modules を返します.
npm link
// running the local cli using its name
osd_ssg -h 

// unlink it when you are done testing
npm unlink osd_ssg

絶対パスへの相対パスの変更.
さて、このプログラムはプロジェクトディレクトリ内で呼び出されるとうまく動作します.でももしcd プロジェクトから再度呼び出して、エラーが発生します.ENOENT: no such file or directory, stat 'styles/index.css' .
これは、プロジェクトディレクトリに相対的なファイルパスを読んでいる場所に1つの場所があるためです.ユーザーがプログラムを別のディレクトリに呼び出すときstyles/index.css したがって、ユーザの作業ディレクトリに相対的であるため、見つかりません.
修正するには、絶対パスにパスを変更する必要がありますpath.resolve ノードからpath モジュールです.
      stylesheet: {
        ...
        // returns an absolute path
        default: path.resolve(__dirname, '../styles/index.css'),
      },

パッケージバージョン
バージョンは現在0.x.y , それは積極的な開発の下で、物事はいつでも破ることができると生産に適していないことを意味します.今私はプログラムを快適にし、パッケージを公開する準備が整いました.パッケージのバージョンを増やす必要があります.
Gitの'タグ'は重要なプロジェクトの歴史のポイントを示すための方法です.それは私たちは簡単に将来的に再訪することができます過去にポイントを修正することができます.
npm version 私たちのパッケージのバージョンをバンプする本当に良いツールです.これは、gitタグだけでなくpackage.json .
// bump the major version, from 0.1.0 to 1.0.0
npm version major

NPMへのリリース
NPMのユーザーとして、あなた自身のプロジェクトで使用するunscopedパッケージを作成することができますし、他の人のためのNPMのパブリックレジストリにそれらを公開します.unscopedパッケージは常にpublicで、パッケージ名だけで参照されます.
NPM CLIを使用してパッケージをリリースするには、まだない場合は端末で認証を行う必要があります.
npm adduser
// publish the package
npm publish
ブーム!Published pakage

それを試してみてください!
興味があれば、このパッケージを右側で試してみてください.
npm exec -- osd_ssg -i folder

結論
もう一つの素晴らしい研究室、私はosd 600が好きです!