はじめに
npmのライフサイクルスクリプトであるprepublishOnly
を使うことで、コンパイル後のJSファイルをgit管理下から除外することができます。
今回は、前回TypeScriptで作成したnpmパッケージeslint-plugin-lookbehind-assertionsのコンパイル後のJSファイル(dist
ディレクトリ)をgit管理の対象外にしていきます。
環境
npmのバージョンは7.17.0
です。
$ npm -v 7.17.0
prepublishOnly
の設定
まず、.gitignore
を使って、git管理したくないコンパイル後のJSファイル(dist
ディレクトリ)をgit管理の対象外に設定します。
.gitignore
dist
続いて、npm publish
前に呼び出されるライフサイクルスクリプトであるprepublishOnly
をpackage.json
に設定します。
package.json
"scripts": { "build": "tsc", "clean": "rimraf dist", "lint": "npx eslint . --ext .ts", "test": "jest", "test-sample": "eslint src/samples/sample.ts", "prepublishOnly": "npm run clean && npm run build" },
prepublishOnly
では、コンパイル後のJSファイルの削除とTSファイルのコンパイル(distディレクトリの作成)を呼び出しています。
"prepublishOnly": "npm run clean && npm run build"
こうすることで、npm publish
の直前でdistディレクトリが作成されるため、npmレジストリにはdistディレクトリも含まれた状態でパッケージが公開されます。
動作確認
試しにnpmパッケージeslint-plugin-lookbehind-assertionsを公開してみます。
$ npm version patch v1.0.1 $ npm publish > eslint-plugin-lookbehind-assertions@1.0.1 prepublishOnly > npm run clean && npm run build > eslint-plugin-lookbehind-assertions@1.0.1 clean > rimraf dist ... > eslint-plugin-lookbehind-assertions@1.0.1 build > tsc ... + eslint-plugin-lookbehind-assertions@1.0.1
npm publish
が実行される前にprepublishOnly
が呼び出されてdist
ディレクトリが作成されていることがわかります。