Eu tenho isso no meu arquivo package.json (versão reduzida):
{
"name": "a-module",
"version": "0.0.1",
"dependencies": {
"coffee-script": ">= 1.1.3"
},
"devDependencies": {
"stylus": ">= 0.17.0"
}
}
Estou usando o NPM versão 1.1.1 no Mac 10.6.8.
Quando executo o seguinte comando a partir da raiz do projeto, ele instala o dependencies
e devDependencies
:
npm install
Fiquei com a impressão de que este comando instalou o devDependencies
:
npm install --dev
Como faço para npm install
instalar apenas dependencies
(o ambiente de produção recebe apenas esses módulos), enquanto algo como npm install --dev
instala tanto dependencies
e devDependencies
?
dependencies
edevDependencies
e quando cada um deles é usado.Respostas:
O
npm install
comando instalará odevDependencies
along otherdependencies
quando executado dentro de um diretório de pacotes, em um ambiente de desenvolvimento (o padrão).Use
npm install --only=prod
(ou--only=production
) para instalar apenasdependencies
e nãodevDependencies,
independentemente do valor daNODE_ENV
variável de ambiente.Fonte: npm docs
Nota: Antes da v3.3.0 da npm (13/08/2015), a opção era chamada
--production
, ou sejanpm install --production
.fonte
npm install yourpackage.tgz
também não obtenham o devDependencies. No entanto, esse já é o caso. Veja a resposta de Kevin Cox abaixo ( stackoverflow.com/a/15826602/825588 ).NODE_ENV=production
de outra coisa que estava fazendo e não conseguia descobrir por toda a minha vida pornpm install
que não instalaria dependências. Obrigado pela resposta completa.npm install --dev
só iria instalar dependências dev--dev
opção está obsoleto. Use em--only=dev
vez disso.Eu também encontro esse problema! A instalação do npm é um pouco confusa e as postagens na web continuam exibindo os sinalizadores -d / - dev como se houvesse um modo de instalação explícito para 'desenvolvimento'.
npm install
instalará " dependências " e " devDependencies "npm install --production
instalará apenas " dependências "npm install --dev
instalará apenas " devDependencies "fonte
NODE_ENV
estiver definido comoproduction
e você o executarnpm install
, não instalará dependências de desenvolvimento. Encontrei esse problema no meu Dockerfile.npm --production=false install
(embora não tenho certeza se isso vai funcionar ao lado da bandeira --dev)A nova opção é:
Se você deseja instalar apenas devDependencies:
fonte
--only=prod
. Você, senhor, está parcialmente correto. ; PSe você leu este POST em 2016, alcance o que deseja usando
O argumento fará com que apenas devDependencies ou non-devDependencies sejam instalados, independentemente do NODE_ENV.
from: https://docs.npmjs.com/cli/install
fonte
--production
e--only={prod[uction]|dev[elopment]}
.Se você já instalou todas as suas dependências e deseja evitar o download dos pacotes de produção do NPM novamente, basta digitar:
Isso removerá as dependências de desenvolvimento da sua
node_modules
pasta, o que é útil se você estiver tentando automatizar um processo em duas etapas, comoCorrendo
npm prune
entre você vai evitar que você precise reinstalar tudo!fonte
Ao usar "npm install", os módulos são carregados e disponibilizados em todo o aplicativo, independentemente de serem "devDependencies" ou "dependencies". Soma desta idéia: tudo o que seu package.json define como uma dependência (qualquer tipo) é instalado em node_modules.
O objetivo da diferença entre dependências / devDependencies / optionalDependencies é o que os consumidores do seu código podem fazer com o w / npm para instalar esses recursos.
De acordo com a documentação: https://npmjs.org/doc/json.html ...
No entanto, para resolver esta questão, se você deseja instalar SOMENTE as "dependências" usando o npm, o seguinte comando é:
Isso pode ser confirmado observando a confirmação do Git que adicionou esse filtro (junto com outros filtros [listados abaixo] para fornecer essa funcionalidade).
Filtros alternativos que podem ser usados pelo npm:
@dmarr tente usar o npm install --production
fonte
O npm instalará dependências de desenvolvimento ao instalar de dentro de um pacote (se houver um
package.json
no diretório atual). Se for de outro local (registro npm, git repo, local diferente no sistema de arquivos), ele instala apenas as dependências.fonte
npm install some-module
não instalará as dependências de devsome-module
.Descobri que, ao tentar instalar dependências de desenvolvimento para um pacote que contém um addon de nó, não é possível evitar a criação do addon ao executar o npm install --dev, mesmo que você queira apenas instalar o devDependencies. Então, eu tive que dar a volta nas costas da NPM:
Ou, melhor (e de forma mais sucinta) ainda,
fonte
Use
npm install packageName --save
isso adicionará o pacote nas dependências , se você usar,npm install packageName --save-dev
então devDependencies .npm install packageName --save-dev
deve ser usado para adicionar pacotes para fins de desenvolvimento. Como adicionar pacotes TDD (Chai, mocha, etc). Que são usados no desenvolvimento e não na produção.fonte
package.json
mas uma vez que essas dependências já foram salvas , como coagirnpm
a instalar apenas um tipo específico de dependência. Quando li sua resposta aqui, não aprendi nada que ajude a resolver o problema colocado pelo OP.Vale ressaltar que você pode usar a
NODE_ENV
variável de ambiente para obter o mesmo resultado. Particularmente útil se você estiver contenha seu aplicativo Node (por exemplo, Docker).O código acima instalará todas as suas dependências, exceto as dev (ie
devDependencies
).se você precisar usar variáveis de ambiente em
Dockerfile
mais informações, consulte aqui .As variáveis de ambiente são fáceis de sobrescrever sempre que necessário (por exemplo, se você deseja executar sua suíte de testes, digamos no Travis CI). Se fosse esse o caso, você poderia fazer algo assim:
Documentação do NPM aqui
Contêinerização feliz =)
fonte
Eu sugiro usar
npm ci
. Se você deseja instalar apenas pacotes necessários à produção (como você escreveu - semdevDependencies
), então:ou
Se você prefere a velha escola
npm install
:ou
Aqui está uma boa resposta por que você deve usar
npm ci
.fonte
npm ci
, não apenasnpm install
!Precisa adicionar a resposta escolhida: A partir de agora,
npm install
em um diretório de pacote (contendopackage.json
) instalará o devDependencies, enquantonpm install -g
não os instalará.fonte
-g
não instaladevDependencies
, mas instala os pacotes globalmente, o que geralmente não é o resultado pretendido.npm install --production
é a maneira correta de instalar módulos de nó que são necessários para a produção. Verifique a documentação para mais detalhesfonte
Agora há um problema, se você tiver o package-lock.json com o npm 5+. Você deve removê-lo antes de usar
npm install --production
.fonte
E, conforme a pergunta para instalar apenas dependências, o seguinte comando ajudará
fonte