Вот раздел скриптов моего 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»),ТГЗ файл 5 МБ.Если я перехожу к артефакту в Artifactory, я вижу файл размером примерно 5 МБ.
При сборке серверного компонента он использует подключаемый модуль Maven для загрузки tgz с помощью "npm pack @ rti / rti-приложение @ последнее».Затем он распаковывает и перепаковывает tgz, включая некоторые другие артефакты.
На этом этапе сервер собирается правильно.Если я построю сервер снова, это также успешно.Однако, если я собираю сервер в третий раз, файл tgz затем усекается до 1900 байт.Публикация клиента восстанавливает артефакт, и все снова работает.До тех пор, пока сервер не будет собран три раза подряд перед сборкой клиента, все будет работать.
Я сузил его до этой конкретной операции "npm pack".
<configuration>
<executable>${npmexe}</executable>
<workingDirectory>target/</workingDirectory>
<arguments>
<argument>pack</argument>
<argument>@rti/rti-app@latest</argument>
</arguments>
</configuration>
Проиграть проще, просто выполнив ту же операцию.
Итак, подведем итог:
- Из каталога rti-app: Publish @ rti / rti-app«npm install && npm publish».
- Из каталога сервера: «npm pack @ rti / rti-app @ latest»
- dir rti * tgz: Вы увидите файл, который> 5 МБ.
- npm pack @ rti / rti-app @ latest
- dir rti * tgz: Вы по-прежнему увидите файл размером> 5 МБ.
- npm pack @ rti / rti-app @ latest
- dir rti * tgz: Теперь вы увидите файл размером 1900 байт.
- Я перепечаталэто несколько раз просто для того, чтобы быть абсолютно уверенным, что эти шаги вызывают его.
Я знаю, что весь дизайн этого замысловатый и слишком сложный.Наша упаковка должна быть переработана и упрощена, но сейчас на это нет времени.Мне просто нужно, чтобы он работал.
Все, что я прочитал, говорит, что "пакет npm" - лучший способ загрузить файл tgz для артефакта NPM.Я предполагаю, что переопределение элемента "pack" в "scripts" является ключом к этому плохому поведению.Неужели мне стоит взглянуть на удаление «pack» и перемещение «webpack --config webpack.aot.js»?
Я не помню этой проблемы, когда мы использовали Sinopia.