Node.js 重写npm脚本以与windows cmd兼容
我试图运行为linux命令行编写的教程中的脚本,但在将其转换为与windows兼容的内容时遇到错误。这是文章中的一行:Node.js 重写npm脚本以与windows cmd兼容,node.js,npm,npm-scripts,Node.js,Npm,Npm Scripts,我试图运行为linux命令行编写的教程中的脚本,但在将其转换为与windows兼容的内容时遇到错误。这是文章中的一行: "build": "cd react-spa && yarn build && cd .. && cp -R react-spa/build/ public/ && mv public/index.html public/app.html" 这就是我所拥有的 cd客户端和纱线构建和cd..&&xcopy clie
"build": "cd react-spa && yarn build && cd .. && cp -R react-spa/build/ public/ && mv public/index.html public/app.html"
这就是我所拥有的
cd客户端和纱线构建和cd..&&xcopy client/build/public//E&&ren public/index.html app.html
这是我在终端收到的错误消息
参数数量无效
npm错误!代码失效循环
npm错误!错误4
npm错误!api@0.0.0build:`cd客户端和纱线构建和cd..&&xcopy client/build/public//E&&ren public/index.html app.html`
npm错误!退出状态4
npm错误!
npm错误!失败api@0.0.0构建脚本。
npm错误!这可能不是npm的问题。上面可能还有其他日志输出。
npm错误!此运行的完整日志可在以下位置找到:
npm错误!C:\Users\user\AppData\Roaming\npm cache\\u logs\2020-05-01T05\u 29\u 54\u 552Z-debug.log
我做错了什么?在package.json中重新定义
构建脚本,如下所示:
“build”:“cd react spa和纱线构建和cd..&&xcopy/e/h/y/q \”react spa/build \“public\\”>nul 2>&1&&del \“public\\app.html\”>nul 2>&1&&ren \“public\\index.html \“app.html \”
注意:前面提到的npm脚本假定您正在运行Windows,npm脚本使用的默认shell是cmd.exe
说明:
进行了以下更改,以匹配与原始npmbuild
脚本(即使用*nix命令编写的脚本)相同的行为:
以下命令:
cp-R反应spa/build/public/
已对命令进行了优化,如下所示:
nul 2>&1
选项:
-复制文件夹和子文件夹,包括空文件夹/e
-复制隐藏的和系统的文件和文件夹/h
-取消确认覆盖文件的提示/y
-复制时不要显示文件名/q
- 每个路径名都用JSON转义双引号括起来,即
\“…\”
部分有一个尾随的反斜杠(public\\
),它已被JSON转义(\
),以通知\\
目标是一个目录。这还可以确保在xcopy
目录不存在时创建该目录公用
部分禁止显示复制了多少文件的确认日志>nul 2>&1
mv public/index.html public/app.html
已改进为使用和命令,如下所示:
del\'public\\app.html\>NUL2>&1&&ren\'public\\index.html\'app.html\'
注意事项:
- 我们首先尝试删除
文件,以确保后续的app.html
命令可以将ren
文件重命名为index.html
,而不会因为已经存在重复的文件而产生任何冲突 我们使用app.html
重定向,以确保在>nul2>&1
文件找不到时,即在构建脚本的第一次运行期间找不到该文件时,防止任何日志app.html
- 每个路径名都用JSON转义双引号括起来,即
\“…\”
部分在public\\index.html
和del
命令中使用反斜杠分隔符(ren
),该分隔符已被JSON转义(\
)。而不是正斜杠(\
)/
你确定它是
/E
而不是/E
?如果您可以从调试日志文件C:\Users\user\AppData\Roaming\npm cache\\u logs\2020-05-01T05\u 29\u 54\u 552Z-debug.log
中显示日志,也会很有帮助。