这是我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>
只需执行相同的操作即可轻松复制。
所以,总结一下:
我知道这整个设计都很复杂。我们的包装需要重新设计和简化,但是现在没有时间了。我只需要它即可工作。
我读过的所有内容都表明,“ npm pack”是下载NPM工件的tgz文件的最佳方法。我认为重写“脚本”中的“ pack”项是此不良行为的关键。我应该注意删除“ pack”并移动“ webpack --config webpack.aot.js”吗?
当我使用Sinopia时,我不记得这个问题。