I use TypeScript 2 in my project. I'd like to use some js library, but also typings for that library. I can install types with simple npm install @types/some-library
. I'm not sure if I should --save
or --save-dev
them. It seems to me that even DefinetelyTyped GitHub readme kind of mentions both versions, but never explains them. I would think that @types should be in devDependencies
, as types are needed for development and aren't used in runtime, but I saw many times @types in just dependencies
. I'm confused.
How should I decide whether @types/* goes into dependencies
or devDependencies
? Are there actually some more or less official instructions?
Let's say you're developing a package "A" that have @types/some-module package in devDependencies. For some reason you're exporting the type from @types/some-module
import {SomeType} from 'some-module';
export default class APackageClass {
constructor(private config: SomeType) {
}
}
Right now Typescript consumers of package "A" are unable to guess what SomeType is, since devDependencies of package "A" are NOT installed.
In that particular case you NEED to place @types/* package with regular "dependencies". For other cases "devDependencies" are good enough.
Are you generating a bundle? If so, I'd suggest not spending too much time debating what goes where. devDependencies
and dependencies
are only meaningful if you're publishing a package that can be used by others and you don't want to spam them with useless dependencies.
TL;DR place it in devDependencies
. Like you said "types are needed for development and aren't used in runtime".