Mocha v7のmocha.optsから.mocharc.{json,js,yml,yaml}にマイグレーションするスクリプト
Mochaではv7からtest/mocha.opts
の設定ファイルが非推奨となっています。
mocha.opts
ファイルはCLIの引数をそのまま書ける設定ファイルです。
--require ts-node/register
mocha.opts
ファイルを利用すると次のようなDeprecation Warningが表示されるはずです。
(node:64389) DeprecationWarning: Configuration via mocha.opts is DEPRECATED and will be removed from a future version of Mocha. Use RC files or package.json instead.
Mocha v6からmocha.opts
の代わりに.mocharc.json
などの設定ファイルがサポートされました。
.mocharc.{json,js,yml,yaml,cjs}
など色々な拡張子がありますが、.mocharc.json
なら次のような設定ファイルとなります。
{
"require": [
"ts-node/register"
]
}
このmocha.opts
から.mocharc.{json,js,yml,yaml}
へのマイグレーションを行うスクリプトを作りました
mocha-migrate
以下にソースがあります。
使い方は単純で、次のようにすれば、mocha.opts
から.mocharc.json
を作成します。
npx @azu/mocha-migrate migrate-opts -file ./test/mocha.opts -type json
それぞれの拡張子の対応は-type
で指定できます。
# mocha.opts to .mocharc.json
npx @azu/mocha-migrate migrate-opts -file ./test/mocha.opts -type json
# mocha.opts to .mocharc.js
npx @azu/mocha-migrate migrate-opts -file ./test/mocha.opts -type js
# mocha.opts to .mocharc.yml
npx @azu/mocha-migrate migrate-opts -file ./test/mocha.opts -type yml
# mocha.opts to .mocharc.yaml
npx @azu/mocha-migrate migrate-opts -file ./test/mocha.opts -type yaml
デフォルトでは作成だけですが、mocha.opts
ファイルを変換後に削除したい場合は-rm
オプションをつけます。
npx @azu/mocha-migrate migrate-opts -file ./test/mocha.opts -type json -rm
monorepoのパッケージのまとめて変換したい場合は、lerna exec
などを使えばまとめて変換できます。
./node_modules/.bin/lerna exec --no-bail npx @azu/mocha-migrate migrate-opts -- -file test/mocha.opts -type json -rm
参考: Migrate mocha.opts to .mocharc.(json|js|yml|yaml) · Issue #125 · secretlint/secretlint
このマイグレーションスクリプトは、mocha migrate
とMochaにマイグレーションコマンドを追加するPRがベースです。
こういうユーザーにとって利益がない変更はできるだけツールが提供したほうがいいので、早くマージされてほしいですね。
同様の書式の変更(機能追加ではない)をやったhusky
の場合は、husky-upgrade
というマイグレーションスクリプトを同梱していました。
同梱してるならDeprecatedWarningにマイグレーション方法も出せるので、そうして欲しかったという話でした。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。