Почему мой файл TGZ обрезается, когда я вызываю «npm pack» для моего артефакта? - PullRequest
0 голосов
/ 14 ноября 2018

Вот раздел скриптов моего 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>

Проиграть проще, просто выполнив ту же операцию.

Итак, подведем итог:

  1. Из каталога rti-app: Publish @ rti / rti-app«npm install && npm publish».
  2. Из каталога сервера: «npm pack @ rti / rti-app @ latest»
  3. dir rti * tgz: Вы увидите файл, который> 5 МБ.
  4. npm pack @ rti / rti-app @ latest
  5. dir rti * tgz: Вы по-прежнему увидите файл размером> 5 МБ.
  6. npm pack @ rti / rti-app @ latest
  7. dir rti * tgz: Теперь вы увидите файл размером 1900 байт.
  8. Я перепечаталэто несколько раз просто для того, чтобы быть абсолютно уверенным, что эти шаги вызывают его.

Я знаю, что весь дизайн этого замысловатый и слишком сложный.Наша упаковка должна быть переработана и упрощена, но сейчас на это нет времени.Мне просто нужно, чтобы он работал.

Все, что я прочитал, говорит, что "пакет npm" - лучший способ загрузить файл tgz для артефакта NPM.Я предполагаю, что переопределение элемента "pack" в "scripts" является ключом к этому плохому поведению.Неужели мне стоит взглянуть на удаление «pack» и перемещение «webpack --config webpack.aot.js»?

Я не помню этой проблемы, когда мы использовали Sinopia.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...