Mova um módulo de devDependencies para dependências no npm package.json

154

Existe algum comando curto para mover um módulo de devDependenciespara dependenciesno package.json?

Encontro-me sempre fazendo isso:

npm uninstall <module_name> --save-dev 
npm install <module_name> --save

Existe uma abordagem mais curta para isso?

Emad Emami
fonte

Respostas:

191

Sim! para mover um módulo de devDependenciespara dependencies:

npm install <module_name> --save-prod

François Wouts
fonte
181

Se você quiser fazer o oposto (por exemplo, mover um módulo de dependenciespara devDependencies), faça o seguinte:

npm install <module_name> --save-dev

ou taquigrafia:

npm i <module_name> -D

atalho para mover de devDependenciespara dependencies(prod):

npm i <module_name> -P
Sid
fonte
5
Funciona para mim, v5.6
Legends
1
taquigrafia npm i module-example -Dtambém trabalho para se deslocar de prod para dev, assim como npm i module-example -Pa mudança de dev a dependências prod
Andriy
@ Andrei obrigado, não pensei nisso. Irá atualizar a resposta!
Sid
Se você estiver usando fio em vez disso, você precisará removê-lo primeiro de dependências com yarn remove <module_name>e, em seguida, está adicionando-lo em devDependencies comyarn add <module_name> --dev
Eugenio
16

Em fio:

Mova um módulo de devDependenciespara dependencies:

yarn remove <module_name> --dev && yarn add <module_name> 

Mova um módulo de dependenciespara devDependencies:

yarn remove <module_name> && yarn add <module_name> --dev

Como dito nos comentários, o comando realmente exclui o módulo e reinstale-o no novo local.

yohaiz
fonte
1
Isso está realmente certo? Não há como o fio mover as coisas de dependenciespara devDependenciessem remover e adicionar novamente?
LondonRob 12/02/19
@LondonRob essa é a única maneira que eu encontrei
yohaiz 12/02/19
21
Isso não está em movimento, este é simplesmente apagar o pacote e instalá-lo novamente
Thanveer Shah
@seeker_of_bacon Nada está sendo executado em segundo plano aqui. Você pode estar confundindo &&com &.
rudolfbyker 26/06
3

Se o seu projeto ainda não tiver um arquivo de bloqueio ou um arquivo de contração, você pode simplesmente mover a linha correspondente no seu arquivo package.json.

(Não estou recomendando não usar arquivos de bloqueio)

sean
fonte
3

O problema com o uso npmou yarncomandos é que existe uma possibilidade de que a versão que é re-adicionado é uma versão diferente do que aquele que é usado actualmente. Se é isso que você quer - tanto um movimento e um upgrade - então vá em frente e usar a resposta aceita.

Caso contrário, basta editar manualmentepackage.json para mover a linha do devDependenciesobjeto para o dependenciesobjeto (criando-o, se necessário). Você pode ir na outra direção também.

O arquivo de bloqueio não contém nenhuma informação sobre se as coisas são dependências de produto ou desenvolvimento, de modo que não precisa ser atualizado. Você pode fazer um npm/ yarn installdepois para corrigir quaisquer sinalizadores nos arquivos de bloqueio.

eedrah
fonte
Embora exista apenas uma única dependenciesseção de nível superior package-lock.json, cada entrada possui um devsinalizador para indicar se é uma dependência de desenvolvedor ou uma dependência transitiva de um. Consulte docs.npmjs.com/files/package-lock.json#dev "Se [dev for verdadeiro], essa dependência será APENAS uma dependência de desenvolvimento do módulo de nível superior ou uma dependência transitiva de um. Isso é falso para dependências que são uma dependência de desenvolvimento do nível superior e uma dependência transitiva de uma dependência de não desenvolvimento do nível superior ".
23919 rob3c
0

O problema do uso da instalação do npm é que você acaba com versões atualizadas. O que funcionou para mim é:

  1. Movendo-os para a parte pretendida (dev ou prod)
  2. Removendo-os da pasta node_modules
  3. Executar npm install

Isso manteve todas as versões intactas.

Ahmed Mahmoud
fonte