O package.json deveria ser editado manualmente? Um programa como o npm não pôde apenas examinar os arquivos, ver as instruções "require" e usá-las para colocar as entradas necessárias no arquivo package.json? Existem programas como esse?
O package.json deveria ser editado manualmente? Um programa como o npm não pôde apenas examinar os arquivos, ver as instruções "require" e usá-las para colocar as entradas necessárias no arquivo package.json? Existem programas como esse?
Respostas:
O arquivo package.json é usado pelo npm para aprender sobre seu projeto node.js.
Usar npm init
para gerar arquivos package.json para você!
Ele vem com o npm. Leia a documentação aqui: https://docs.npmjs.com/cli/init
Além disso, há uma ferramenta oficial que você pode usar para gerar esse arquivo programaticamente: https://github.com/npm/init-package-json
npm init
foi exatamente o que eu estava procurando! Também depois que eu costumo correr npm shrinkwrap
para criar um npm-shrinkwrap.json
arquivo
npm init
: use npm install <pkg> --save
posteriormente para instalar um pacote e salve-o como uma dependência no arquivo package.json.
npm init
no Console do Gerenciador de Pacotes do Visual Studio 2015, ele é exibido [...] Press ^C at any time to quit.
e interrompido sem perguntar nada ou criar o arquivo json. Estou esquecendo de algo?
npm init --force --yes
é o único liner para que este arquivo seja gerado
Primeiro, corra
npm init
... fará algumas perguntas ( leia isso primeiro ) sobre seu projeto / pacote e, em seguida, gerará um arquivo package.json para você.
Depois de ter um arquivo package.json, use
npm install <pkg> --save
ou
npm install <pkg> --save-dev
... para instalar uma dependência e anexá-lo automaticamente para o seu package.json
's dependencies
lista.
(Nota: pode ser necessário ajustar manualmente os intervalos de versão para suas dependências.)
package.json
, geralmente é tratado automaticamente.
--save
não é mais necessário em versões mais recentes do MPN
Acabei de escrever um script simples para coletar as dependências em ./node_modules. Cumpre minha exigência no momento. Isso pode ajudar alguns outros, eu posto aqui.
var fs = require("fs");
function main() {
fs.readdir("./node_modules", function (err, dirs) {
if (err) {
console.log(err);
return;
}
dirs.forEach(function(dir){
if (dir.indexOf(".") !== 0) {
var packageJsonFile = "./node_modules/" + dir + "/package.json";
if (fs.existsSync(packageJsonFile)) {
fs.readFile(packageJsonFile, function (err, data) {
if (err) {
console.log(err);
}
else {
var json = JSON.parse(data);
console.log('"'+json.name+'": "' + json.version + '",');
}
});
}
}
});
});
}
main();
No meu caso, o script acima gera:
"colors": "0.6.0-1",
"commander": "1.0.5",
"htmlparser": "1.7.6",
"optimist": "0.3.5",
"progress": "0.1.0",
"request": "2.11.4",
"soupselect": "0.2.0", // Remember: remove the comma character in the last line.
Agora, você pode copiá-los e colá-los. Diverta-se!
npm ls --depth=0
irá imprimir mais ou menos o mesmo (não sei se foi o caso em 2012, embora)
a
, eo pacote a
precisa de pacotes b
e c
, esta saída vontade roteiro todos os níveis, por isso a
, b
, c
que é não correta. Só deve produzir a
, os subpacotes serão resolvidos automaticamente.
npm init
para criar o arquivo package.json e, em seguida, você usa
ls node_modules/ | xargs npm install --save
para preencher os módulos que você possui na pasta node_modules.
Edit: @paldepind apontou que o segundo comando é redundante porque npm init
agora adiciona automaticamente o que você tem na pasta node_modules /. Não sei se esse sempre foi o caso, mas agora, pelo menos, funciona sem o segundo comando.
npm init
havia adicionado automaticamente dependências com base nos pacotes instalados e que não havia necessidade de executar o segundo comando.
npm dedupe
, que extrai as dependências compartilhadas entre seus módulos e armazena-as no nível superior do node_modules
diretório. Mas não toca package.json
! Com isso, você pode confirmar e compartilhar sua configuração deduplicada.
Linha de comando :
npm init
criará o arquivo package.json
Para instalar, atualizar e desinstalar pacotes sob dependências no arquivo package.json:
Linha de comando :
npm install <pkg>@* --save
adicionará automaticamente a versão mais recente do pacote em dependências ao arquivo package.json
EX:
npm install node-markdown@* --save
Linha de comando :
npm install <pkg> --save
também adicionará automaticamente a versão mais recente do pacote em dependências ao arquivo package.json
se você precisar de uma versão específica para um pacote, use esta linha de comando :
npm install <pkg>@<version> --save
adicionará automaticamente uma versão específica do pacote sob dependências ao arquivo package.json
EX:
npm install koa-views@1.0.0 --save
se você precisar de um intervalo específico de versão para um pacote, use esta linha de comando :
npm install <pkg>@<version range>
adicionará automaticamente a versão mais recente do pacote entre o intervalo de versões em dependências no arquivo package.json
EX:
npm install koa-views@">1.0.0 <1.2.0" --save
Para mais detalhes sobre como escrever a versão para o pacote npm Doc
Linha de comando :
npm update --save
atualizará os pacotes no arquivo package.json e adicionará automaticamente a versão atualizada de todos os pacotes sob dependências ao arquivo package.json
Linha de comando :
npm uninstall <pkg> --save
removerá automaticamente o pacote das dependências para o arquivo package.json e removerá o pacote da pasta node_module
Correr npm init -y
faz o seu package.json
com todos os padrões.
Você pode mudar de package.json
acordo.
Isso economiza tempo várias vezes, impedindo a pressão enter
de todos os comandosnpm init
Agora você pode usar o Yeoman - Modern Web App Scaffolding Tool no terminal do nó usando 3 etapas fáceis.
Primeiro, você precisará instalar o yo e outras ferramentas necessárias:
$ npm install -g yo bower grunt-cli gulp
Para estruturar um aplicativo Web, instale o gerador generator-webapp :
$ npm install -g generator-webapp // create scaffolding
Execute yo e ... está tudo pronto:
$ yo webapp // create scaffolding
A Yeoman pode escrever um código padrão para todo o seu aplicativo da Web ou Controladores e modelos. Ele pode iniciar um servidor da Web de visualização ao vivo para edições e compilação; não apenas que você também pode executar seus testes de unidade, minimizar e concatenar seu código, otimizar imagens e muito mais ...
Yeoman (yo) - ferramenta de andaime que oferece um ecossistema de andaimes específicos da estrutura, chamados geradores, que podem ser usados para executar algumas das tarefas tediosas mencionadas anteriormente.
Grunt / gulp - usado para criar, visualizar e testar seu projeto.
Bower - é usado para gerenciamento de dependências, para que você não precise mais baixar manualmente suas bibliotecas front-end.
Com base na resposta do Pylinux, abaixo está uma solução para o sistema operacional Windows,
dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
Espero que ajude.
use o comando npm init -f para gerar o arquivo package.json e depois use --save após cada comando para que cada módulo seja atualizado automaticamente dentro do seu package.json para ex: npm install express --save
Se você git e usuário do GitHub:
generate-package
mais simplesmente do que npm init
.
outro
e / ou você não gosta de package.json
modelo, que gera pacote ou npm init
gera:
você pode gerar seu próprio modelo por meio de aplicativos de andaimes como gerar , velas ou yeoman .
Esta resposta é relevante para março de 2018. No futuro, os dados desta resposta podem estar obsoletos.
O autor desta resposta usou pessoalmente o pacote generate em março de 2018.
Você precisa usar o git e o GitHub para usar o generate-package.
Por exemplo, eu crio uma pasta em branco sasha-npm-init-vs-generate-package
.
Comando:
D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package
[16:58:52] starting generate
[16:59:01] √ running tasks: [ 'package' ]
[16:59:04] starting package
? Project description? generate-package demo
? Author's name? Sasha Chernykh
? Author's URL? https://vk.com/hair_in_the_wind
[17:00:19] finished package √ 1m
package.json
:
{
"name": "sasha-npm-init-vs-generate-package",
"description": "generate-package demo",
"version": "0.1.0",
"homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package",
"author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)",
"repository": "Kristinita/sasha-npm-init-vs-generate-package",
"bugs": {
"url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
},
"license": "MIT",
"engines": {
"node": ">=4"
},
"scripts": {
"test": "mocha"
},
"keywords": [
"generate",
"init",
"npm",
"package",
"sasha",
"vs"
]
}
D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (sasha-npm-init-vs-generate-package)
version: (1.0.0) 0.1.0
description: npm init demo
entry point: (index.js)
test command: mocha
git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package
keywords: generate, package, npm, package, sasha, vs
author: Sasha Chernykh
license: (ISC) MIT
About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json:
{
"name": "sasha-npm-init-vs-generate-package",
"version": "0.1.0",
"description": "npm init demo",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
},
"keywords": [
"generate",
"package",
"npm",
"package",
"sasha",
"vs"
],
"author": "Sasha Chernykh",
"license": "MIT",
"bugs": {
"url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
},
"homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}
Is this ok? (yes) y
{
"name": "sasha-npm-init-vs-generate-package",
"version": "0.1.0",
"description": "npm init demo",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
},
"keywords": [
"generate",
"package",
"npm",
"package",
"sasha",
"vs"
],
"author": "Sasha Chernykh",
"license": "MIT",
"bugs": {
"url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
},
"homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}
Eu acho que, generate-package
mais simplesmente, isso npm init
.
Que criar o seu próprio package.json
modelo, consulte gerar e Yeoman exemplos.
npm link