NPM脚本,拷贝包.当绑定时,Json到dist

npm script, copy package.json to dist when bundling

本文关键字:定时 Json 绑定 dist 脚本 拷贝 NPM      更新时间:2023-09-26

我正在尝试添加第二部分到我的npm bundle脚本。第一部分运行得很好,但是我试图将3个文件与包一起复制。

现在我有:

"bundle": "NODE_ENV=production webpack --output-file bundledFile.js && cp package.json dist/",

NODE_ENV=production webpack --output-file bundledFile.js单独工作很好。不工作的部分是&& cp package.json dist/,我想脚本复制我的包。Json(实际上还有其他2个文件,但只是从这个开始)到dist文件夹。全新的这些脚本,任何想法如何修复?感谢任何建议,谢谢!

语法应该可以工作(并且看起来可以,看看您的注释)。我建议把你的npm脚本分成多个点:

{
  "bundle": "NODE_ENV=production webpack --output-file bundledFile.js",
  "copy": "cp package.json dist/ && cp README.md dist/ && cp .npmrc dist/",
  "build": "npm run bundle && npm run copy"
}

为了跨平台兼容(cp通常在windows上不可用),我还建议在某处添加一个构建文件,如./tools/copy-distrubution-files.js,它将使用fs复制必要的文件,然后在npm脚本中调用node ./tools/copy-distribution-files.js。这将(主要)独立于平台(您仍然必须假设node可用作为nodejs可执行文件,但这对我来说似乎相当合理)。

对我来说最快的方法是在包中引用powershell。Json脚本如下:

"copyFile": "@powershell copy './source/package.json' './deploy'",

如果您在windows上运行,请使用以下命令:

"copy": "copy '"package.json'" '"dist'" && copy '"README.md'" '"dist'" && copy '".npmrc'" '"dist'""

copy而不是cp。不要忘记对每个路径使用" (在引号内用'转义)。如果你需要定义一个长路径,不要使用/(斜杠),而要使用'(反斜杠)

:

copy "devices''VS-88UT''index.html" "devices''VS-88UT''dist"

另外,如果你喜欢的话,有一个很好的插件可以在每次构建之前和之后运行bash命令

使用Node

使用Node.js的内置功能,而不是依赖于shell命令,这些命令在每个操作系统上都不可用,这是可行的方法。因为这个原因,本页上的所有其他答案都应该避免。

对于当前的Node.js版本,可以使用fs.copy来复制文件和文件夹。将它与node -e "javascript code goes here"结合使用,可以编写简短的跨平台npm脚本。

"copyAssets": "node -e '"require('fs').cpSync('./assets', './build/assets', {recursive: true});'""

/assets文件夹复制到/build/assets文件夹。

在windows中复制文件夹和文件只需使用

xcopy git''* dist'' /e /i /h

我想这可能对某人有帮助。