LoginSignup
5
5

More than 3 years have passed since last update.

MDMTをwindows環境でnpm run buildする際のエラー解消法

Posted at

初めに

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"

こんな感じです。参考になれば。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5