Я использую TypeScript 2 в моем проекте. Я хотел бы использовать библиотеку js, но также набирать тексты для этой библиотеки. Я могу установить типы с простым npm install @types/some-library
. Я не уверен, должен ли я --save
или --save-dev
они. Мне кажется, что даже в ReadmeTyped GitHub readme упоминает обе версии, но никогда не объясняет их. Я думаю, что @types должен присутствовать devDependencies
, так как типы необходимы для разработки и не используются во время выполнения, но я много раз видел @types просто dependencies
. Я запутался.
Как мне решить, входит ли @ types / * в dependencies
или devDependencies
? Есть ли какие-то более или менее официальные инструкции?
dependencies
иdevDependencies
в последнем случае.devDependencies
иdependencies
не имеет никакого значения при построении сверток, это то , чтоcreate-react-app
навязывает , как хорошо , но в конечном счете , это до вас , чтобы выбратьОтветы:
Допустим, вы разрабатываете пакет «A», в котором есть пакет @ types / some-module в devDependencies. По какой-то причине вы экспортируете тип из @ types / some-module
В настоящее время потребители Typescript пакета "A" не могут угадать, что такое SomeType, поскольку devDependencies пакета "A" НЕ установлены.
В этом конкретном случае вам необходимо разместить пакет @ types / * с обычными «зависимостями». Для других случаев «devDependencies» достаточно хороши.
источник
devDependencies
?dependencies
. В противном случаеdevDependencies
все в порядкеdependencies
сделает дерево зависимостей раздутым.Если вы просто генерируете пакет, вам может не понадобиться делать различие между
dependencies
иdevDependencies
. Эта функцияnpm
обычно полезна при публикации пакета, который может использоваться другими, и вы не хотите рассылать им спам с избыточными зависимостями.Могут быть и другие случаи использования, когда разделение зависимостей может быть полезным, но если у вас нет явной необходимости в этом, тогда я советую просто выбрать любой из них и поместить все туда. Это не трудно разделить их потом, если возникнет такая необходимость.
Хорошо известным примером этой практики IRL является то
create-react-app
, что по умолчанию неотбрасываемый шаблон создает всеdependencies
, смотрите эту ветку и этот ответ.источник
devDependencies
не устанавливаются, когда вы делаетеnpm install --production
(илиnpm ci --production
), и, следовательно, недоступны при запуске производственного кода. Это очень значимое различие для службы, а не только для библиотеки.В конкретном случае развертывания приложения Node.js в рабочей среде требуется установить только те зависимости, которые необходимы для запуска приложения.
npm install --production
илиnpm ci --production
илиyarn --production
В этом случае типы должны быть
devDependencies
, чтобы они не вздулись при установке.Замечание: я знаю, что это было упомянуто в комментарии Брэда Уилсона к другому ответу. Этот момент кажется достойным ответа, хотя.
источник