lerna publish и npm pack не могут упаковать все файлы в папку dist

Я пытаюсь создать свой первый пакет Angular Component с помощью lerna, и он работал довольно хорошо, пока я не понял, что мне нужно добавить «ng-packagr», чтобы весь HTML-код был встроен в остальной код. После добавления этой поддержки и начала ее работы мои файлы внезапно не публикуются в архиве.

Вот мой package.json

{
  "name": "@custom/core",
  "version": "0.0.7",
  "description": "Test",
  "main": "./dist/bundles/custom-core.umd.min.js",
  "module": "./dist/esm2015/custom-core.js",
  "typings": "./dist/index.d.ts",
  "$schema": "./node_modules/ng-packagr/package.schema.json",
  "ngPackage": {
    "lib": {
      "entryFile": "./src/index.ts"
    },
    "whitelistedNonPeerDependencies": [
      "."
    ]
  },
  "scripts": {
    "build": "ng-packagr -p package.json"
  },
  "files": [
    "dist"
  ],
...

Моя папка dist содержит всевозможные папки вроде этой:

введите описание изображения здесь

Но затем, когда я запускаю lerna publish или npm pack, происходит следующее:

введите описание изображения здесь

Как видите, в архив добавляется только 1 файл ...

Кто-нибудь знает, почему это происходит внезапно? Я пробовал поиграть с моим .gitignore, думая, что, возможно, он заставлял упаковку игнорировать эти другие файлы, но это было не так.

ОБНОВЛЕНИЕ

Итак, я обнаружил, что виноват ng-packagr. Когда я запускаю свой npm run build, который использует ng-packagr -p package.json для создания различных пакетов модулей, этот интерфейс командной строки также генерирует package.json, который находится внутри моей папки dist. Когда npm pack или lerna publish пытаются упаковать все, используя package.json, они должны смотреть на сгенерированный в dist, а не на тот, который находится в папке над ним.

Я не знаю, как мне это исправить.


person Matt Hintzke    schedule 27.02.2019    source источник
comment
Мой текущий прием заключается в том, чтобы просто поместить * в свойство files в package.json, что также добавит все исходные файлы. Я бы предпочел не включать исходные файлы в этот опубликованный артефакт, но если это единственный способ заставить его работать   -  person Matt Hintzke    schedule 28.02.2019


Ответы (1)


Мое решение заключалось в том, чтобы отказаться от плана использовать ключ files в файле package.json и вместо этого использовать файл .npmignore. Вот моя копия:

# Node generated files
node_modules
npm-debug.log
assets
package-lock.json

# aot files
aot

# OS generated files
Thumbs.db
.DS_Store

# Ignored files
*.ts
!*.d.ts
tsconfig.json
tsconfig-aot.json
tslint.json
*.tgz
config
src
person Justin Daniel    schedule 10.04.2019