初めに
fandさんことamagiさんによるMDMTをWindows環境でせこせこいじっていた訳ですが、
ひと段落したタイミングでnpm run build
したところ、
'hoge' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
こんな感じのエラーがいっぱい出たので解決法をまとめます。(ある程度わかってる人ならなんとなくこの時点で察せるやつだと思うけど、、、)
問題点
結論から言うと、package.jsonにあるコマンドがwin/mac&linuxで異なることが原因です。まんまですね。なので、、、
"scripts": {
"build": "NODE_ENV=production run-s clean build:manifest build:build build:export build:nojekyll build:preload build:sw",
"build:build": "next build",
"build:export": "next export -o docs",
"build:manifest": "node scripts/generate-manifest.js",
"build:nojekyll": "touch docs/.nojekyll",
"build:preload": "node scripts/copy-preload.js",
"build:sw": "workbox generateSW scripts/workbox-config.js",
"clean": "rm -rf .next docs",
"lint": "eslint --ext .js,.ts,.tsx pages lib components scripts",
"start": "next",
"test": "NODE_ENV=production babel-node test/index.js"
}
このコードを
"scripts": {
"build": "SET NODE_ENV=production & run-s clean build:manifest build:build build:export build:nojekyll build:preload build:sw",
"build:build": "next build",
"build:export": "next export -o docs",
"build:manifest": "node scripts/generate-manifest.js",
"build:nojekyll": "copy nul docs\\.nojekyll",
"build:preload": "node scripts/copy-preload.js",
"build:sw": "workbox generateSW scripts/workbox-config.js",
"clean": "rd /s /q .next docs",
"lint": "eslint --ext .js,.ts,.tsx pages lib components scripts",
"start": "next",
"test": "NODE_ENV=production babel-node test/index.js"
}
こうすれば走ります。
具体的に何をどうしたかというと、、、
NODE_ENV
をwindowsに合わせてset
と&
をつけてあげたり、
"build": "NODE_ENV=production run-s clean build:manifest build:build build:export build:nojekyll build:preload build:sw"
"build": "SET NODE_ENV=production & run-s clean build:manifest build:build build:export build:nojekyll build:preload build:sw"
touch
はwindowsにはないので、copy nul
に変更してあげる。& /
(スラッシュ)だとパス指定できないので\
(バックスラッシュ)で対応してあげる。
"build:nojekyll": "touch docs/.nojekyll"
"build:nojekyll": "copy nul docs\\.nojekyll"
rm -rf
もwindowsにはないので、rd /s /q
で対応
"clean": "rm -rf .next docs"
"clean": "rd /s /q .next docs"
こんな感じです。参考になれば。