O que significa -save-dev no npm install grunt --save-dev

277

Acabei de começar a usar o Grunt.js . É muito difícil de configurar e estou no ponto de criar um package.jsonarquivo.

Após este tutorial , ele diz que existem 3 maneiras de criar um package.jsonarquivo.

O primeiro é fazer npm install grunt --save-dev

Mas o que --save-devsignifica? Eu tentei olhar, mas acaba em vão.

Vennsoh
fonte
Eu acho que consigo encontrar algumas respostas. gruntjs.com/getting-started - npmjs.org/doc/json.html#devDependencies
Vennsoh 7/13
link do tutorial quebrado
SteveC 23/11

Respostas:

317

--save-dev: o pacote aparecerá em suas devDependencies.

De acordo com o npm install docs .

Se alguém estiver planejando baixar e usar seu módulo em seu programa, provavelmente não deseja ou precisa fazer o download e criar a estrutura de teste ou documentação externa que você usa.

Em outras palavras, quando você executa npm install, os devDependencies do seu projeto serão instalados, mas os devDependencies de todos os pacotes dos quais seu aplicativo depende não serão instalados; além disso, outros aplicativos que o tenham como dependência não precisam instalar suas devDependencies. Esses módulos devem ser necessários apenas no desenvolvimento do aplicativo (por exemplo, grunhido, mocha etc.).

De acordo com o package.json docs

Edit: Tente visualizar o que npm installfaz:

  • seu projecto
    • dependência instalada
      • dependência instalada
        • dependência instalada
        • devDependency NÃO instalado
      • devDependency NÃO instalado
    • devDependency instalado
      • dependência instalada
      • devDependency NÃO instalado
Andreas Hultgren
fonte
2
por padrão, ele não instala com dependências de dev, mas como eu instalo com então? npm install --devbandeira?
StanleyZheng
4
@stanzheng Não sei ao certo o que você precisa saber. Se você estiver em um projeto e for executado npm install, as devDependencies do projeto também serão instaladas. Você não deseja que as devDependencies de uma dependência sejam instaladas. Se você deseja desenvolver um pacote npm, você faria git clone xxxesse projeto e executaria npm installnele.
Andreas Hultgren
3
"devDependencies para as dependências do seu aplicativo não serão instaladas quando você executa o npm install" está incorreto. Se eu tiver um package.json e ele contiver apenas "devDependencies" com meus pacotes npm, e digitar "npm install", esses "devDependecies" serão instalados.
core
6
Eu tentei entender e não o fiz. Então eu tentei entender a visualização e não o fiz. O que significa cada item de marcador? Uma pasta? O que o item tachado significa? Um diretório não existente? Se isso for verdade, como você pode listar coisas exaustivamente inexistentes ?
Rafael Eyng
8
Para esclarecer, se npm installfor executado em seu projeto, todos os devDependencies em package.json serão instalados, mas se você empacotar seu projeto como um novo pacote npm e publicá-lo, quando outra pessoa instalar seu pacote com npm install, os devDependencies não serão instalado em seu sistema. Isso está certo? @stanzheng ou você pode executar npm instalar --production para instalar tudo em package.json exceto as dependências dev
rwilson04
99

Existem (pelo menos) dois tipos de dependências de pacotes que você pode indicar nos arquivos package.json:

  1. Os pacotes necessários para usar seu módulo estão listados na propriedade "dependências". Usando o npm, você pode adicionar essas dependências ao arquivo package.json da seguinte maneira:

    npm install --save packageName
  2. Os pacotes necessários para ajudar a desenvolver seu módulo estão listados na propriedade "devDependencies". Esses pacotes não são necessários para que outras pessoas usem o módulo, mas se eles quiserem ajudar a desenvolver o módulo, esses pacotes serão necessários. Usando o npm, você pode adicionar esses devDependencies ao seu arquivo package.json da seguinte maneira:

    npm install --save-dev packageName
Lonnie Best
fonte
35

Para adicionar à resposta de Andreas, você pode instalar apenas as dependências usando:

npm install --production
machinehead115
fonte
7

A documentação do npm para npm install <package-name> --savee npm install <package-name> --save-devpode ser encontrada aqui:

https://docs.npmjs.com/getting-started/using-a-package.json#the-save-and-save-dev-install-flags

Um package.jsonarquivo declara metadados sobre o módulo que você está desenvolvendo. Os dois comandos mencionados acima modificam esse package.jsonarquivo. --savedeclarará o pacote instalado (neste caso grunt) como uma dependência do seu módulo; --save-devirá declará-lo como uma dependência para o desenvolvimento do seu módulo.

Pergunte a si mesmo: o pacote instalado será necessário para o uso do meu módulo ou será necessário apenas para desenvolvê-lo?

Niko Kovacevic
fonte
6

Quando você usa o parâmetro "--save", sua dependência estará dentro do número 1 abaixo em package.json. Quando você usa o parâmetro "--save-dev", sua dependência estará dentro do número 2 abaixo em package.json.

# 1 "dependências": esses pacotes são requeridos pelo seu aplicativo em produção.

# 2 "devDependencies": esses pacotes são necessários apenas para desenvolvimento e teste

Sathesh
fonte
5

Para mim, a primeira resposta parece um pouco confusa, portanto, para ser curta e limpa:

npm install <package_name>salva todos os pacotes especificados em dependências por padrão . Além disso, você pode controlar onde e como eles são salvos com alguns sinalizadores adicionais:

npm install <package_name> --no-save Impede o salvamento nas dependências.

npm install <package_name> ---save-devatualiza o devDependenciesno seu pacote. Eles são usados ​​apenas para testes e desenvolvimento locais.

Você pode ler mais em dcu

AnnaKlein
fonte