NodeJS npm脚本,绑定时将package.json复制到dist

hkmswyz6  于 2023-06-05  发布在  Node.js
关注(0)|答案(5)|浏览(295)

我正在尝试添加第二部分到我的npm包脚本。第一部分运行很好,但我试图复制在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/,我希望脚本将我的package.json(实际上还有其他2个文件,但只是从这个文件开始)复制到dist文件夹。全新的这些脚本,任何想法如何修复?感谢任何建议,谢谢!

cdmah0mi

cdmah0mi1#

语法应该可以工作(看你的评论,似乎可以)。不过,我建议将你的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,它将使用fscopy the necessary files,然后在npm脚本中使用node ./tools/copy-distribution-files.js调用它。这将是(大部分)平台独立的(你仍然必须假设node作为nodejs可执行文件可用,但这对我来说似乎是相当合理的)。

mpbci0fu

mpbci0fu2#

对我来说,最快的方法是在package.json脚本中引用powershell,如下所示:

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

nnsrf1az3#

如果你在Windows上运行,使用以下命令:

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

复制而不是cp。不要忘记对每个路径使用***""***(在引用的命令中使用******对它们进行转义)。如果你需要定义一个长路径,不要使用/(斜杠),而要使用\(反斜杠)
例如:

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

另外,如果您喜欢nice plugin在每次构建之前和之后运行bash命令

flvlnr44

flvlnr444#

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

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

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

5ssjco0h

5ssjco0h5#

使用节点

使用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文件夹。

相关问题