Node.js
paquete.json
Buscar..
Observaciones
Puedes crear package.json
con
npm init
que le preguntará acerca de los datos básicos sobre sus proyectos, incluido el identificador de licencia .
Definición básica del proyecto
{
"name": "my-project",
"version": "0.0.1",
"description": "This is a project.",
"author": "Someone <[email protected]>",
"contributors": [{
"name": "Someone Else",
"email": "[email protected]"
}],
"keywords": ["improves", "searching"]
}
Campo | Descripción |
---|---|
nombre | un campo obligatorio para instalar un paquete. Necesita ser minúscula, una sola palabra sin espacios. (Se permiten guiones y guiones bajos) |
versión | un campo obligatorio para la versión del paquete que usa versiones semánticas . |
descripción | Una breve descripción del proyecto. |
autor | Especifica el autor del paquete. |
contribuyentes | una matriz de objetos, uno para cada contribuyente |
palabras clave | una serie de cadenas, esto ayudará a las personas a encontrar su paquete |
Dependencias
"dependencias": {"nombre-módulo": "0.1.0"}
- exacto :
0.1.0
instalará esa versión específica del módulo. - la versión menor más nueva :
^0.1.0
instalará la versión menor más nueva, por ejemplo0.2.0
, pero no instalará un módulo con una versión mayor más alta, por ejemplo,1.0.0
- el parche más nuevo :
0.1.x
o~0.1.0
instalará la versión más nueva del parche disponible, por ejemplo,0.1.4
, pero no instalará un módulo con una versión mayor o menor, por ejemplo,0.2.0
o1.0.0
. - comodín :
*
instalará la última versión del módulo. - repositorio git : lo siguiente instalará un tarball desde la rama maestra de un repositorio git. También se puede proporcionar un
#sha
,#tag
o#branch
:- GitHub :
user/project
ouser/project#v1.0.0
- url :
git://gitlab.com/user/project.git
ogit://gitlab.com/user/project.git#develop
- GitHub :
- ruta local :
file:../lib/project
Después de agregarlos a su package.json, use el comando npm install
en el directorio de su proyecto en la terminal.
Dependencias
"devDependencies": {
"module-name": "0.1.0"
}
Para dependencias necesarias solo para el desarrollo, como probar proxies de estilo ext. Esas dependencias de desarrollo no se instalarán cuando se ejecute "npm install" en modo de producción.
Guiones
Puede definir secuencias de comandos que se pueden ejecutar o se activan antes o después de otra secuencia de comandos.
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
En este caso, puede ejecutar el script ejecutando cualquiera de estos comandos:
$ npm run-script test
$ npm run test
$ npm test
$ npm t
Scripts predefinidos
Nombre del script | Descripción |
---|---|
prepublicar | Ejecutar antes de que se publique el paquete. |
publicar, publicar | Ejecutar después de que se publica el paquete. |
preinstalar | Ejecutar antes de instalar el paquete. |
instalar, postinstalar | Ejecutar después de instalar el paquete. |
preinstalar, desinstalar | Ejecutar antes de que se desinstale el paquete. |
postuninstall | Ejecutar después de que se desinstala el paquete. |
versión previa | Ejecutar antes de golpear la versión del paquete. |
postversion | Ejecutar después de golpear la versión del paquete. |
pretest, prueba, postest | Ejecutado por el npm test |
Pretop, detener, poststop | Ejecutado por el comando npm stop |
prearranque, inicio, poststart | Ejecutado por el npm start |
prerestart, reinicio, postrestart | Ejecutado por el comando npm restart |
Scripts definidos por el usuario
También puede definir sus propios scripts de la misma manera que lo hace con los scripts predefinidos:
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
En este caso, puede ejecutar el script ejecutando cualquiera de estos comandos:
$ npm run-script ci
$ npm run ci
Los scripts definidos por el usuario también admiten scripts anteriores y posteriores , como se muestra en el ejemplo anterior.
Definición extendida del proyecto
Algunos de los atributos adicionales son analizados por el sitio web de npm como repository
, bugs
o homepage
y se muestran en el cuadro de información de este paquete.
{
"main": "server.js",
"repository" : {
"type": "git",
"url": "git+https://github.com/<accountname>/<repositoryname>.git"
},
"bugs": {
"url": "https://github.com/<accountname>/<repositoryname>/issues"
},
"homepage": "https://github.com/<accountname>/<repositoryname>#readme",
"files": [
"server.js", // source files
"README.md", // additional files
"lib" // folder with all included files
]
}
Campo | Descripción |
---|---|
principal | Script de entrada para este paquete. Este script se devuelve cuando un usuario requiere el paquete. |
repositorio | Ubicación y tipo de repositorio público. |
loco | Bugtracker para este paquete (por ejemplo, github) |
página principal | Página de inicio de este paquete o del proyecto general. |
archivos | Lista de archivos y carpetas que deben descargarse cuando un usuario realiza una npm install <packagename> |
Explorando package.json
Un archivo package.json
, generalmente presente en la raíz del proyecto, contiene metadatos sobre su aplicación o módulo, así como la lista de dependencias para instalar desde npm cuando se ejecuta npm install
.
Para inicializar un package.json
escriba npm init
en su símbolo del sistema.
Para crear un package.json
con valores predeterminados use:
npm init --yes
# or
npm init -y
Para instalar un paquete y guardarlo en package.json
use:
npm install {package name} --save
También puedes usar la notación abreviada:
npm i -S {package name}
Los alias de NPM -S
a --save
y -D
a --save-dev
para guardar en sus dependencias de producción o desarrollo respectivamente.
El paquete aparecerá en tus dependencias; Si usa --save-dev
lugar de --save
, el paquete aparecerá en sus devDependencies.
Propiedades importantes de package.json
:
{
"name": "module-name",
"version": "10.3.1",
"description": "An example module to illustrate the usage of a package.json",
"author": "Your Name <[email protected]>",
"contributors": [{
"name": "Foo Bar",
"email": "[email protected]"
}],
"bin": {
"module-name": "./bin/module-name"
},
"scripts": {
"test": "vows --spec --isolate",
"start": "node index.js",
"predeploy": "echo About to deploy",
"postdeploy": "echo Deployed",
"prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
},
"main": "lib/foo.js",
"repository": {
"type": "git",
"url": "https://github.com/username/repo"
},
"bugs": {
"url": "https://github.com/username/issues"
},
"keywords": [
"example"
],
"dependencies": {
"express": "4.2.x"
},
"devDependencies": {
"assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
},
"peerDependencies": {
"moment": ">2.0.0"
},
"preferGlobal": true,
"private": true,
"publishConfig": {
"registry": "https://your-private-hosted-npm.registry.domain.com"
},
"subdomain": "foobar",
"analyze": true,
"license": "MIT",
"files": [
"lib/foo.js"
]
}
Información sobre algunas propiedades importantes:
name
El nombre único de su paquete y debe estar en minúsculas. Esta propiedad es necesaria y su paquete no se instalará sin ella.
- El nombre debe ser menor o igual a 214 caracteres.
- El nombre no puede comenzar con un punto o un guión bajo.
- Los paquetes nuevos no deben tener letras mayúsculas en el nombre.
version
La versión del paquete se especifica mediante la versión semántica (semver). Lo que supone que un número de versión se escribe como MAJOR.MINOR.PATCH e incrementas el:
- Versión importante cuando haces cambios de API incompatibles
- Versión MENOR cuando agrega funcionalidad de una manera compatible con versiones anteriores
- Versión PATCH cuando haces correcciones de errores compatibles con versiones anteriores
description
La descripción del proyecto. Intenta que sea breve y conciso.
author
El autor de este paquete.
bin
Un objeto que se utiliza para exponer scripts binarios de su paquete. El objeto asume que la clave es el nombre del script binario y el valor es una ruta relativa al script.
Esta propiedad es utilizada por paquetes que contienen un CLI (interfaz de línea de comandos).
script
Un objeto que expone comandos npm adicionales. El objeto asume que la clave es el comando npm y el valor es la ruta del script. Estos scripts pueden ejecutarse cuando ejecuta npm run {command name}
o npm run-script {command name}
.
Los paquetes que contienen una interfaz de línea de comandos y se instalan localmente pueden llamarse sin una ruta relativa. Así que en lugar de llamar a ./node-modules/.bin/mocha
puedes llamar directamente a mocha
.
main
El principal punto de entrada a su paquete. Cuando la llamada require('{module name}')
en el nodo, este será el archivo real que se requiere.
Se recomienda encarecidamente que requerir el archivo principal no genere efectos secundarios. Por ejemplo, requerir el archivo principal no debe iniciar un servidor HTTP o conectarse a una base de datos. En su lugar, debe crear algo así como exports.init = function () {...}
en su script principal.
keywords
Una serie de palabras clave que describen su paquete. Esto ayudará a la gente a encontrar su paquete.
devDependencies
Estas son las dependencias que solo están destinadas al desarrollo y prueba de su módulo. Las dependencias se instalarán automáticamente a menos que se haya establecido la variable de entorno de NODE_ENV=production
. Si este es el caso, todavía puede estos paquetes usando npm install --dev
peerDependencies
Si está utilizando este módulo, peerDependencies enumera los módulos que debe instalar junto con este. Por ejemplo, moment-timezone
debe instalarse junto a moment
porque es un complemento para moment, incluso si no lo require("moment")
directamente require("moment")
.
preferGlobal
Una propiedad que indica que esta página prefiere instalarse globalmente usando npm install -g {module-name}
. Esta propiedad es utilizada por paquetes que contienen un CLI (interfaz de línea de comandos).
En todas las demás situaciones NO debe usar esta propiedad.
publishConfig
PublishConfig es un objeto con valores de configuración que se utilizarán para publicar módulos. Los valores de configuración que se configuran anulan su configuración npm predeterminada.
El uso más común de publishConfig
es publicar su paquete en un registro privado de npm para que aún tenga los beneficios de npm pero para paquetes privados. Esto se hace simplemente configurando la URL de su npm privado como valor para la clave de registro.
files
Esta es una matriz de todos los archivos para incluir en el paquete publicado. Se puede utilizar una ruta de archivo o una ruta de carpeta. Se incluirán todos los contenidos de una ruta de carpeta. Esto reduce el tamaño total de su paquete al incluir solo los archivos correctos que se distribuirán. Este campo funciona junto con un archivo de reglas .npmignore
.