При создании пакета у меня должен быть файл package.json в моей папке / src?

#typescript #npm #package.json

#typescript #npm #package.json

Вопрос:

У меня есть несколько пакетов, в которых есть package.json файл в корневом каталоге, а также package.json файл в /src папке. При сборке в /src папку копируется /dist файл. (и позже опубликован в Nexus).

Мне интересно, правильный ли это путь, поскольку при разработке я изменяю только самый внешний /package.json file . Это означает, что файл /src «устарел». И обновление двух файлов — это проблема.

Я делаю это «правильным» способом, должен ли я обновлять два файла? Или я могу просто использовать один файл, «корневой».

 package.json
src/
    index.ts
    package.json
dist/
    index.d.ts
    index.js
    package.json //from src
  

Комментарии:

1. Вы имеете в виду файл package.json, который должен быть в каждом модуле зависимости? Или package.json, который был бы в вашем сгенерированном модуле зависимым, если бы кто-то использовал модуль в своем пакете? Не совсем уверен, о чем вы спрашиваете.

2. В корневом каталоге есть один файл package.json, который сообщает npm, какие пакеты необходимы при разработке. В папке / src есть еще один, который включается при публикации, это тот, который виден, когда кто-то использует пакет в своем проекте. Мне интересно, требуются ли оба, и, похоже, мне нужен package.json в / src при использовании ссылки npm.

3. Да, я не совсем уверен, требуется ли это, но полезно для отслеживания зависимостей с помощью таких вещей, как плагины CI OWASP и т.д., И разработчиков, которые могут захотеть перестроить пакет независимо от своего собственного и т.д.

Ответ №1:

Способ настройки вашего проекта немного необычен. Обычно проект будет выглядеть следующим образом, с одним package.json в корне:

 .npmignore
package.json
src/
    index.ts
dist/
    index.d.ts
    index.js
  

Вместо того, чтобы публиковать только содержимое dist папки, вы бы запускали npm publish из корня проекта. Новый файл .npmignore сообщает npm, что не следует публиковать. Если единственное, что вы хотите исключить, это src , ваш .npmignore должен выглядеть следующим образом:

 src
  

Затем в package.json задайте поля main и typings , чтобы указать Node и TS, где найти ваш код:

 {
  "main": "dist/index.js",
  "typings": "dist/index.d.ts"
  ...
}
  

(В качестве альтернативы, если вы действительно просто хотите опубликовать содержимое dist , вы могли бы настроить другой этап сборки для копирования вашего root-файла package.json в dist . Но стратегия публикации, которую я описал выше, гораздо более типична.)