当我针对我的工件调用“ npm pack”时,为什么我的TGZ文件被截断了?

时间:2018-11-14 03:54:03

标签: node.js npm artifactory

这是我package.json中要发布的组件的脚本部分:

"scripts": {
  "build-ng": "ngc -p tsconfig.json",
  "clean-src": "rimraf src/*.d.ts src/*.js* src/**/*.json src/**/*.ngfactory.ts src/*.ngfactory.ts src/**/*.js*",
  "clean": "npm run cleanup && rimraf pack",
  "build-aot": "npm run cleanup && npm run build-ng && npm run pack && npm run cleanup",
  "cleanup": "rimraf dist && npm run clean-src && rimraf assets",
  "webpack": "webpack",
  "add-assets": "copyfiles -u 4 ./node_modules/@rti/rti-lib/assets/**/*.* ./assets/ && copyfiles -u 2 ./src/assets/**/*.* ./assets",
  "pack": "webpack --config webpack.aot.js",
  "prepare": "npm run build-aot && npm run add-assets",
  "prepublishOnly": "npm version prerelease --preid=snapshot",
  "publish": "git add package.json && git commit -m \"Package version Changed\" && git push"
},

构建并发布此项目时(使用“ npm install”和“ npm publish”),tgz文件为5mb。如果我浏览Artifactory中的工件,则会看到一个大约5mb的文件。

构建服务器组件时,它使用Maven插件通过“ npm pack @ rti / rti-app @ latest”下载tgz。然后它将解压缩并重新打包tgz,包括其他一些工件。

此时,服务器正确构建。如果我再次构建服务器,它也会成功。但是,如果我第三次构建服务器,则tgz文件将被截断为1,900字节。发布客户端将还原工件,然后一切又恢复正常。只要服务器在构建客户端之前没有连续构建三遍,一切都将继续工作。

我将其范围缩小到此特定的“ npm pack”操作。

<configuration>
  <executable>${npmexe}</executable>
  <workingDirectory>target/</workingDirectory>
  <arguments>
    <argument>pack</argument>
    <argument>@rti/rti-app@latest</argument>
  </arguments>
</configuration>

只需执行相同的操作即可轻松复制。

所以,总结一下:

  1. 在rti-app目录中:通过“ npm install && npm publish”发布@ rti / rti-app。
  2. 在服务器目录中:“ npm pack @ rti / rti-app @ latest”
  3. dir rti * tgz:您将看到一个大于5mb的文件。
  4. npm包@ rti / rti-app @ latest
  5. dir rti * tgz:您仍然会看到大于5mb的文件。
  6. npm包@ rti / rti-app @ latest
  7. dir rti * tgz:现在,您将看到一个1,900字节的文件。
  8. 我已经多次对此表示谴责,以确保绝对是这些步骤导致了它。

我知道这整个设计都很复杂。我们的包装需要重新设计和简化,但是现在没有时间了。我只需要它即可工作。

我读过的所有内容都表明,“ npm pack”是下载NPM工件的tgz文件的最佳方法。我认为重写“脚本”中的“ pack”项是此不良行为的关键。我应该注意删除“ pack”并移动“ webpack --config webpack.aot.js”吗?

当我使用Sinopia时,我不记得这个问题。

0 个答案:

没有答案