package.json
. Este artigo irá guiá-lo pelo arquivo package.json. Espero que seja útil para você! Entenda package.json
No diretório raiz de cada projeto (pacote baixado do npm ou de outros projetos nodejs), geralmente há um arquivo package.json, que define os vários módulos necessários para o projeto, bem como as informações de configuração do projeto ( Metadados como nome, versão, licença, como iniciar o projeto, executar scripts, etc.). O comando npm install
baixa automaticamente os módulos necessários com base neste arquivo de configuração.
O arquivo package.json
é um objeto JSON e cada membro do objeto é uma configuração do projeto atual. Por exemplo, name
é o nome do projeto version
é a versão (seguindo o formato de "versão principal.versão secundária.versão secundária"). Ele também desempenhará diversas funções no ciclo de vida do projeto, incluindo desenvolvimento, testes e versões online.
package.json funciona
Como criar package.json
1. Use a CLI do cliente da ferramenta de linha de comando
npm init
Isso iniciará o questionário de linha de comando, que criará package.json
no diretório onde você iniciou o comando.
Entrada front-end (vue) para o curso de domínio: Entre no aprendizado
2. Crie o valor padrão
Para obter o valor padrão package.json
, execute npm init
com --yes
ou -y
:
npm init -y
Este método usará package.json
do atual As informações extraídas do diretório geram valores padrão, pulando a etapa de resposta às perguntas.
3. Crie manualmente
um novo arquivo package.json diretamente no diretório raiz do projeto e insira o conteúdo relevante. Consulte as notas em package.json abaixo para obter detalhes.
Explicação detalhada dos campos comuns nos arquivos package.json
1. Nome
é um campo obrigatório, que é o nome do módulopacote atual. O comprimento deve ser menor ou igual a 214 caracteres. ) ou "_" (sublinhado) e não pode conter letras maiúsculas.
Este nome pode ser passado como parâmetro para require(), portanto deve ser curto, mas ainda assim significativo.
2. Versão
é um campo obrigatório, o número da versão do pacote atual, o padrão é
1.0.0
quando criado pela primeira vez.
version deve ser resolvido por um módulo node-semver do qual o npm depende. Define o progresso da iteração da versão do projeto atual. (Siga o formato de "versão principal. versão secundária. versão secundária")
Talvez muitos amigos agora não prestem atenção ou não se importem com o número da versão e prefiram usar o número da versão do produto, ou o git método hashcode.
3. O
campo opcional de descrição deve ser uma string. As informações de descrição do pacote atual são uma string. Ajuda as pessoas a encontrar o pacote ao usar a pesquisa npm.
Se não houver informações description
em package.json, o npm usará a primeira linha de README.md no projeto como informações de descrição. Essas informações de descrição ajudarão outras pessoas a pesquisar seu projeto, por isso é recomendável escrever bem description
.
4. O
campo opcional principal especifica o arquivo de entrada para carregamento do projeto.
O valor padrão deste campo é index.js
no diretório raiz do módulo.
5. O
campo opcional scripts
scripts
é um objeto hash composto por comandos de script. Eles são executados em diferentes ciclos de vida do pacote. A chave é o evento do ciclo de vida e o valor é o comando a ser executado. Especifica a abreviatura da linha de comando npm para executar o comando de script. Por exemplo, start especifica o comando a ser executado ao executar npm run start. Podemos personalizar o comando que queremos para executar o script.
Referência: http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
script de execução de configuração de scripts
1)
Execute o comando echo xxx
Quando eu executo npm run, um novo Shell será criado automaticamente e o comando de script especificado será executado neste Shell. Portanto, desde que o comando possa ser executado pelo Shell (geralmente Bash), ele pode ser escrito no script npm. também copiará node_modules/.bin no diretório atual para o caminho do sistema atual (é apenas uma cópia temporária. Após a conclusão da execução, a variável PATH será restaurada ao seu estado original), portanto, todos os scripts no node_modules Subdiretório /.bin do diretório atual. Todos podem ser chamados diretamente usando o nome do script sem adicionar um caminho.
Por exemplo:
se usarmos node para executar um serviço node.js, node + 文件
pode usar node server.js
, também podemos usar webpack para empacotar o arquivo front-end, webpack-dev-server
; webpack-dev-server precisa ser instalado. Módulos dependentes
; "build": "webpack --mode=desenvolvimento", "dev": "webpack-dev-server --mode=desenvolvimento --contentBase=./dist", "servidor":"nó app.js" }
Entramos npm run server
na ferramenta de linha de comando e node app.js será chamado para nos ajudar a executá-lo.
Forma abreviada:
npm start é npm run start npm stop é a abreviatura de npm run stop npm test é a abreviatura de npm run test npm restart é a abreviatura de npm run stop && npm run restart && npm run start
Scripts comumente usados ----- Transferência de coleção online
// Excluir diretório "limpo": "rimraf dist/*", // Construa um serviço HTTP "serve" localmente: "http-server -p 9090 dist/", //Abra o navegador "open:dev": "opener http://localhost:9090", //Atualiza "livereload" em tempo real: "live-reload --port 9091 dist/", // Construa o arquivo HTML "build:html": "jade index.jade > dist/index.html", // Enquanto o arquivo CSS for alterado, execute novamente a compilação "watch:css": "watch 'npm run build:css' assets/styles/", // Enquanto o arquivo HTML for alterado, execute novamente a compilação "watch:html": "watch 'npm run build:html' assets/html", //Implantar no Amazon S3 "deploy:prod": "s3-cli sync ./dist/ s3://example-com/prod-site/", //Construir favicon "build:favicon": "node scripts/favicon.js", "start": "cross-env NODE_ENV=production node server/index.js",
6. dependencies e devDependencies
são campos opcionais. O campo
dependencies
especifica os módulos dos quais o projeto depende edevDependencies
especifica os módulos necessários para o desenvolvimento do projeto.
O valor aponta para um objeto. Cada membro deste objeto consiste no nome do módulo e no requisito de versão correspondente, indicando o módulo dependente e seu intervalo de versões.
Não existe package.json criado por padrão, ele será gerado quando instalarmos npm install
um módulo.
npm instalar expresso npm instalar expresso --save npm install express --save-dev
O código acima significa instalar o módulo expresso separadamente.
dependencies
.--save-dev
significa gravar o módulo --save
atributo dependencies
devDependencies
7.
campo opcional bundledDependencies, outras dependências empacotadas ao mesmo tempo ao publicar o pacote.
8. Campo opcional peerDependencies
, dependência de compatibilidade, se seu projeto ou módulo depende de outro módulo ao mesmo tempo, mas a versão da qual depende é diferente.
Por exemplo, seu projeto depende da versão 1.0 do módulo A e do módulo B, e o próprio módulo A depende da versão 2.0 do módulo B.
{ "nome": "chai-como-prometido", "peerDependências": { "chai": "1.x" } }
O código acima especifica que ao instalar o módulo chai-as-promised
, o programa principal chai
deve ser instalado junto e a versão chai
deve ser 1.x
Se a dependência especificada pelo seu projeto for a versão 2.0 do chai
, um erro será relatado.
9.
Campo opcional Bin O campo bin é usado para especificar a localização do arquivo executável correspondente a cada comando interno.
Crie o arquivo /bin/www no diretório raiz do projeto
#!Configure
"bin"no
nó /usr/bin/envpackage.json: {
"lee-cli":"./bin/www" }
npm link
adiciona o caminho do valor do atributo bin no pacote a um link global, cria uma conexão de atalho e
executa lee-cli
na linha de comando para executar o arquivo bin/www. O processo é:
No exemplo acima, www criará um link simbólico node_modules/.bin/www
. Como o diretório node_modules/.bin/
será adicionado à variável PATH do sistema em tempo de execução, esses scripts podem ser chamados diretamente por meio de comandos sem caminho ao executar o npm.
10. config
O campo de configuração é usado para gerar valores para variáveis de ambiente
{ "nome": "pacote", "config": { "porta": "8080" }, "scripts": { "iniciar": "node server.js" } }
Se quisermos alterá-lo, podemos usar
npm config set package:port 80
11. O
campo opcional de motores especifica a versão da plataforma na qual o módulo é executado, como uma determinada versão do Node ou um navegador. versão
npm
aplicável.
"motores": { "nó": ">=0,10,3 <0,12" }
12. Campo opcional Licença
, indicando a definição da licença aplicável ao código descrito em package.json. Protocolos diferentes têm restrições diferentes. Informe aos usuários quais permissões eles têm para usar seu módulo e quais restrições existem para usá-lo.
Consulte: Choosealicense.com/ para escolher uma licença.
Por exemplo: MIT: permissão máxima, outros podem alterar seu código após baixá-lo, valor de instalação padrão.
13.Campo opcional
Autor
, desenvolvedor do projeto.14.
Campo opcional privado, valor booleano, seja privado. Quando definido como verdadeiro, o npm se recusa a publicar.
Esta é uma forma de evitar que pacotes privados sejam liberados para terceiros. Se desejar agrupar um pacote para ser publicado apenas em um registro específico (por exemplo, um registro interno), você pode usar a descrição do dicionário subscribeConfig abaixo para substituir os parâmetros de configuração do registro no momento da publicação.
15. O
campo opcional de palavras-chave, palavras-chave do projeto, é uma matriz de strings. Ajuda as pessoas a encontrar o pacote ao usar a pesquisa npm.
16. O
campo opcional os especifica o sistema operacional no qual o módulo pode ser executado.
17. style
style especifica o local do arquivo de estilo quando usado pelo navegador.
18.
O tipo de local onde o código do pacote do repositório é armazenado pode ser git ou svn. git pode ser no Github
19. O
campo opcional da página inicial não possui URLs com prefixos de protocolo como http://.
Problema de versão:
versão: "1.0.0"
1.0.0:
A alteração doprimeiro
dígito significa: incompatibilidade com código antigo, atualização em grande escala, lançamento de nova versão;
dígito
significa: algumas funções foram adicionadas, bit de compatibilidade com versões anteriores
significa: pequenos patches, correções de bugs
quando publicamos o projeto, usamos npm + git
npm version patch
(patch patch); ; use git tag
para executar e estará automaticamente no git npm version minor
para sincronizar o segundo dígito da versão do gitnpm version major
;versão npm [<nova versão> | pré-lançamento do git | major: número da versão principal minor: número da versão secundária patch: número do patch premajor: versão principal preliminar pré-patch: versão secundária preliminar pré-lançamento: versão de pré-lançamento
ps: Observação, se um erro for relatado: o diretório de trabalho do Git não está limpo, significa que você preciso que git status
esteja limpo agora.
adicione. git commit -m "explicação detalhada do pacote.json"
npm versin monir -m"增加版本号"
git push -u origin master
Como formular regras?
Como usuários, podemos indicar no arquivo package.json quantas atualizações podemos aceitar para este pacote (assumindo que atualmente estamos contando com a versão 1.2.4):
Se pretendemos aceitar apenas atualizações para a versão do patch (ou seja, a última mudança de dígito), você pode escrever assim:
1,2 1.2.x ~1.2.4
Se você aceita atualizações de versão secundárias (mudanças na segunda posição), você pode escrever assim:
1 1.x ^1.2.4
Se você pode aceitar atualizações de versão principais (aceitar naturalmente alterações de versão secundária e patch), você pode escrever assim:
*x
Para resumir: existem três tipos de alterações de versão, qual tipo de atualização de pacotes dependentes é aceita ?Escreva o número da versão com precisão no dígito anterior.
Ciclo de versão e estágios:
2.1.0-beta.1
momento
2.1.0-beta.1
geralmente é usado por usuários como este. Esse tipo de coisa não será instalado. Esse tipo pode ser usado por usuários internos e testadores.
Exemplos | de |
---|---|
do pacote | de dependência |
~ | 1.2.3 versão principal + versão secundária + versão do patch |
; | versão principal; 1.0.0 <= versão < 2.0.0 |
Descrição | do intervalo da versão | da instância | do símbolo |
---|---|---|---|
1.0.0 | 1.0.0 | está bloqueado para a versão 1.0.0 e deve ser esta versão. | |
^ corresponderá ao pacote de dependência de versão grande mais recente | ^1.2.3, ^0.2.3 | >=1.2.3 <2.0.0, >=0.2.3 <0.3.0 | significa instalar a versão mais recente de 1.xx (não inferior a 1.2 .3, incluindo 1.3.0), mas 2.xx não será instalado, o que significa que o número da versão principal não será alterado durante a instalação. Deve-se notar que se o número da versão principal for 0, o cursor se comporta da mesma forma que o til. Isso ocorre porque ainda está em estágio de desenvolvimento e mesmo pequenas alterações no número de versão podem causar incompatibilidade do programa. (Versão principal) |
~ corresponderá ao pacote de dependência da versão secundária mais recente | ~1.2.3 | >=1.2.3 <1.3.0 | significa instalar a versão mais recente de 1.2.x (não inferior a 1.2.3), mas não instalar 1.3.x . Ou seja, o número da versão principal e o número da versão secundária não serão alterados durante a instalação. |
>= | >=2.1.0 | >=2.1.0 | maior ou igual a 2.1.0 |
<= | <=2.0.0 | <=2.0.0 | menor ou igual a 2.0.0 |
último | Instale a versão mais recente | ||
* | >=0.0.0 | qualquer versão | |
- | 1.2.3 - 2.3.4 | >=1.2.3 <=2.3.4 |
Diferencie entre instalar Dependencies
e dependencies
?
devDependencies
são módulos necessários para o desenvolvimento, então podemos instalá-los conforme necessário durante o processo de desenvolvimento para melhorar nossa eficiência de desenvolvimento, como algumas bibliotecas de terceiros conhecidas, webpack
, rollUp
, less
, babel
, etc. Não há necessidade de instalá-lo no ambiente de produção.
Recomenda-se que as seguintes bibliotecas sejam instaladas em devDependencies
:
pacote de dependência (especificar, atualizar, local, usar, desinstalar)
1. Instalar o pacote de dependência local
npm install jquery
Este comando irá crie um diretório node_modules
no diretório atual e, em seguida, baixe o pacote que especificamos neste diretório.
2. Para especificar a versão de instalação, você pode @版本号
após o nome do pacote.
Se o nome de um pacote começar com package @
, ele será um pacote com escopo definido .
npm instala [email protected] npm instalar jquery@">=1.1.0 <2.2.0"Depois que
npm install jquery@latest
for atualizado, o número da versão nas dependências também mudará.
3. Atualize o pacote dependente
npm update jquery
4. Use o pacote
let jquery = require('jquery')
; caminho</script>
6, Desinstalar o pacote dependente
npm desinstalar jquery Controle
de versão semântico (regras de controle de versão semântico)
https://docs.npmjs.com/about-semantic-versioning
https://github.com/npm/node-semver
pacote .json Notas
de acordo com o acima Quando usamos npm init
seremos solicitados a preencher vários itens. Alguns deles são opcionais e outros são obrigatórios. Esses campos obrigatórios são todos os campos que um conteúdo package.json
deve ter: name
e. version
. Caso contrário, install
não pode ser executada
xxx
Outras notas: