new wings

プログラミングを始めたので、感想を書いてくと思います

npm packと.gitignore

有識者によると.npmignoreよりもpakcage.jsonのfilesを使ったほうが良いそう。.gitignore無視されて認証情報漏れる恐れあり。

medium.com

npmの動作はもう少し公式ドキュメント読んで理解したほうがよさそう。

何らかのライブラリを作りたい。 typescriptでソースを書きtscでCommonJSとESモジュールの二つをビルドする。 それぞれのモジュールの出力先フォルダがdist-cjs, dist-esmだとする。

それについては下記を参考にした。

future-architect.github.io

このとき、ビルド生成物をgit管理下には置かないものとする。.gitignoreに次のように書く。

dist-*

package.jsonのscriptsには次のようにビルドのコマンドを並べる。

"scripts": {
  "build": "npm-run-all -s build:esm build:cjs",
  "build:cjs": "tsc --project . --module commonjs --outDir ./dist-cjs",
  "build:esm": "tsc --project . --module es2015 --outDir ./dist-esm",
  "prebuild": "rimraf ./dist-*",
  "prepare": "npm run build"
}

ここでnpm packするとなぜかbuild-cjsフォルダしか作られていない。

stackoverflow.com

なんで片方だけ残るのか理由はさっぱりわからないが上記リンク先に従って.npmignoreファイルを作り

!dist-*

と書くと、npm packで作った圧縮ファイルの中にdist-esmとdist-cjsの両方ともきちんと入っていた。 あるいはpackage.jsonのfilesにフォルダ名を明記するいいのか?

追記:

やっぱりpackage.jsonのfilesフィールドにフォルダ名を書くとpackされる。このとき.npmignoreは不要。

"files": [
  "/dist-cjs",
  "/dist-esm"
]