#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
. Но стратегия публикации, которую я описал выше, гораздо более типична.)