😕

pnpmではpre, postプレフィックスが使えない

2023/11/05に公開

pnpmではpre, postプレフィックスが使えない

npmのscriptsにはpre, postというプレフィックスが存在するのをご存知でしょうか?(公式Doc
例えば、以下のようなpackage.jsonがあった時に

...
  "prebuild": "hoge command",
  "build": "huga build"
...

npm run buildを実行すると、buildを実行する前にprebuildが実行されるというものです。(postbuildはbuild実行後に実行される)
私は最近知りました。
これらのプレフプロジェクトうと、package.jsonのscriptsをもう少し綺麗に記述することができるかもしれないと思い、少しずつ使ってみています。
pnpmを採用しているプロジェクトでも使ってみようとしたところ、preプレフィックスが発火していないようでした。
そこで調べてみたところ、pnpmのデフォルトではpre, postプレフィックスは使えないようです。

デフォルトでは、pnpm はユーザー定義スクリプトの任意の pre および post フックを実行しません (例えば prestart など) 。

出典:
https://pnpm.io/ja/cli/run#npm-run-との違い


おまけ

オプションを設定すると使える

enable-pre-post-scriptsというオプションをtrueにすると、pre, postプレフィックスが動作するようです。

pnpm -enable-pre-post-scripts=true build

上記で期待通りに動きましたが
ドキュメントには、.npmrcに設定するやり方が記載されていました。

宿題

時間があるときに、yarnやbunだとどうなるか調べてみおうと思います。\

追記: yarnも使えないっぽい

Discussion