Tipos de dependências
As dependências servem muitos propósitos diferentes. Algumas dependências são necessárias para construir seu projeto, outras são necessárias ao executar seu programa. Assim, há diferentes tipos de dependências que você pode ter (por exemplo, dependencies
, devDependencies
e peerDependencies
).
Seu arquivo package.json
conterá todas essas dependências:
{
"name": "my-project",
"dependencies": {
"package-a": "^1.0.0"
},
"devDependencies": {
"package-b": "^1.2.1"
},
"peerDependencies": {
"package-c": "^2.5.4"
},
"optionalDependencies": {
"package-d": "^3.1.0"
}
}
A maioria das pessoas só tem dependencies
e devDependecies
, mas é importante entender cada um destes tipos.
dependencies
Essas são suas dependências normais, ou melhor, as que você precisa quando executar seu código (por exemplo, React ou ImmutableJS).
devDependecies
Estas são as dependências do seu desenvolvimento. Dependências que você precisa em algum momento do workflow de desenvolvimento, mas não quando executa seu código (por exemplo, Babel ou Flow).
peerDependencies
Dependências de mesmo nível são um tipo especial de dependência que só aparecem se você estiver publicando seu próprio pacote.
Ter uma dependência do mesmo nível significa que seu pacote precisa de uma dependência que é exatamente a mesma dependência que uma pessoa que está instalando seu pacote vai precisar ter. Isso é útil para pacotes como react
que precisa ter uma única cópia de react-dom
que é também usado pela pessoa que instalá-lo.
optionalDependencies
Dependências opcionais são apenas isso: opcional. Se a instalação delas falhar, Yarn ainda vai dizer que o processo de instalação foi bem sucedidos.
Isso é útil para as dependências que não necessariamente funcionarão em cada máquina e você tem um segundo plano caso elas não sejam instaladas (por exemplo, Watchman).
bundledDependencies
Array de nomes de pacotes que serão empacotados na publicação do pacote.
Dependências agrupadas devem estar dentro do seu projeto. A funcionalidade é basicamente a mesma que as dependências normais. Elas também serão empacotadas quando yarn pack
for executado.
Dependências normais geralmente são instaladas do registro npm. Dependências agrupadas são úteis em casos onde dependências normais não são suficiente:
- Quando você quiser re-utilizar uma biblioteca de terceiros que não vem do registro npm ou que foi modificado.
- Quando quiser re-utilizar seus próprios projetos como módulos.
- Quando você deseja distribuir alguns arquivos com seu módulo.