Node.js
package.json
Ricerca…
Osservazioni
Puoi creare package.json
con
npm init
che ti chiederà informazioni di base sui tuoi progetti, incluso l' identificatore della licenza .
Definizione del progetto di base
{
"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 | Descrizione |
---|---|
nome | un campo obbligatorio per un pacchetto da installare. Deve essere minuscolo, parola singola senza spazi. (Sono consentiti trattini e trattini bassi) |
versione | un campo obbligatorio per la versione del pacchetto che utilizza la versione semantica . |
descrizione | una breve descrizione del progetto |
autore | specifica l'autore del pacchetto |
contributori | una serie di oggetti, uno per ogni contributore |
parole chiave | una serie di stringhe, questo aiuterà le persone a trovare il tuo pacchetto |
dipendenze
"dipendenze": {"nome-modulo": "0.1.0"}
- esatto :
0.1.0
installerà quella versione specifica del modulo. - la versione minore più recente :
^0.1.0
installerà la versione minore più recente, ad esempio0.2.0
, ma non installerà un modulo con una versione maggiore maggiore, ad esempio1.0.0
- patch più recente :
0.1.x
o~0.1.0
installerà la versione di patch più recente disponibile, ad esempio0.1.4
, ma non installerà un modulo con versione maggiore o minore maggiore, ad es.0.2.0
o1.0.0
. - carattere jolly :
*
installerà l'ultima versione del modulo. - repository git : il seguente installerà un tarball dal ramo master di un repository git. Possono anche essere forniti
#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 :
- percorso locale :
file:../lib/project
Dopo averli aggiunti al pacchetto package.json, utilizzare il comando npm install
nella directory del progetto nel terminale.
devDependencies
"devDependencies": {
"module-name": "0.1.0"
}
Per le dipendenze richieste solo per lo sviluppo, come test di estensioni per i proxy di stile. Queste dev-dependencies non verranno installate quando si esegue "npm install" in modalità produzione.
Script
È possibile definire script che possono essere eseguiti o attivati prima o dopo un altro script.
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
In questo caso, puoi eseguire lo script eseguendo uno di questi comandi:
$ npm run-script test
$ npm run test
$ npm test
$ npm t
Script predefiniti
Nome script | Descrizione |
---|---|
prepublish | Esegui prima che il pacchetto sia pubblicato. |
pubblicare, postpublish | Esegui dopo che il pacchetto è stato pubblicato. |
preinstallare | Esegui prima che il pacchetto sia installato. |
installa, postinstall | Esegui dopo l'installazione del pacchetto. |
preinstallare, disinstallare | Esegui prima che il pacchetto venga disinstallato. |
postuninstall | Esegui dopo che il pacchetto è stato disinstallato. |
preversione, versione | Esegui prima di eseguire il bump della versione del pacchetto. |
postversion | Esegui dopo aver eseguito il bump della versione del pacchetto. |
pretest, test, post test | Esegui dal comando di npm test |
prestop, stop, poststop | Esegui con il comando npm stop |
prestart, start, poststart | Esegui dal comando di npm start |
prerestart, restart, postrestart | Esegui dal comando di npm restart |
Script definiti dall'utente
Puoi anche definire i tuoi script nello stesso modo in cui lo fai con gli script predefiniti:
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
In questo caso, puoi eseguire lo script eseguendo uno di questi comandi:
$ npm run-script ci
$ npm run ci
Gli script definiti dall'utente supportano anche gli script pre e post , come mostrato nell'esempio sopra.
Definizione del progetto estesa
Alcuni degli attributi aggiuntivi sono analizzati dal sito Web di npm come repository
, bugs
o homepage
e mostrati nel riquadro informazioni per questi pacchetti
{
"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 | Descrizione |
---|---|
principale | Script di entrata per questo pacchetto. Questo script viene restituito quando un utente richiede il pacchetto. |
deposito | Ubicazione e tipo del repository pubblico |
bug | Bugtracker per questo pacchetto (es. Github) |
homepage | Homepage per questo pacchetto o il progetto generale |
File | Elenco di file e cartelle che devono essere scaricati quando un utente esegue l' npm install <packagename> |
Esplorando package.json
Un file package.json
, solitamente presente nella root del progetto, contiene metadati relativi all'app o al modulo e all'elenco delle dipendenze da installare da npm durante l'esecuzione npm install
.
Per inizializzare un package.json
digitare npm init
nel prompt dei comandi.
Per creare un package.json
con i valori predefiniti utilizzare:
npm init --yes
# or
npm init -y
Per installare un pacchetto e salvarlo su package.json
usa:
npm install {package name} --save
Puoi anche usare la notazione abbreviata:
npm i -S {package name}
Alias NPM -S
per --save
e -D
per --save-dev
per salvare rispettivamente nelle dipendenze di produzione o di sviluppo.
Il pacchetto apparirà nelle dipendenze; se usi --save-dev
anziché --save
, il pacchetto apparirà nelle tue devDependencies.
Proprietà importanti di 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"
]
}
Informazioni su alcune proprietà importanti:
name
Il nome univoco del tuo pacchetto e dovrebbe essere in minuscolo. Questa proprietà è richiesta e il pacchetto non verrà installato senza di esso.
- Il nome deve essere inferiore o uguale a 214 caratteri.
- Il nome non può iniziare con un punto o un trattino basso.
- I nuovi pacchetti non devono contenere lettere maiuscole nel nome.
version
La versione del pacchetto è specificata da Semantic Versioning (semere). Che presuppone che un numero di versione sia scritto come MAJOR.MINOR.PATCH e si incrementa il:
- Versione MAJOR quando si apportano modifiche API incompatibili
- Versione MINORE quando si aggiungono funzionalità in modo compatibile con le versioni precedenti
- Versione PATCH quando si effettuano correzioni di errori compatibili con le versioni precedenti
description
La descrizione del progetto. Cerca di mantenerlo breve e conciso.
author
L'autore di questo pacchetto.
bin
Un oggetto che viene utilizzato per esporre script binari dal pacchetto. L'oggetto presuppone che la chiave sia il nome dello script binario e il valore di un percorso relativo allo script.
Questa proprietà viene utilizzata dai pacchetti che contengono una CLI (interfaccia a riga di comando).
script
Un oggetto che espone ulteriori comandi di npm. L'oggetto presuppone che la chiave sia il comando npm e che il valore sia il percorso dello script. Questi script possono essere eseguiti quando si esegue npm run {command name}
o npm run-script {command name}
.
I pacchetti che contengono un'interfaccia a riga di comando e sono installati localmente possono essere chiamati senza un percorso relativo. Quindi, invece di chiamare ./node-modules/.bin/mocha
puoi chiamare direttamente mocha
.
main
Il principale punto di accesso al tuo pacchetto. Quando si chiama require('{module name}')
nel nodo, questo sarà il file effettivo richiesto.
È altamente consigliato che richiedere il file principale non generi effetti collaterali. Ad esempio, richiedendo il file principale non dovrebbe avviare un server HTTP o connettersi a un database. Invece, dovresti creare qualcosa come exports.init = function () {...}
nel tuo script principale.
keywords
Una serie di parole chiave che descrivono il tuo pacchetto. Questi aiuteranno le persone a trovare il tuo pacco.
devDependencies
Queste sono le dipendenze destinate esclusivamente allo sviluppo e al test del modulo. Le dipendenze verranno installate automaticamente a meno che non sia stata impostata la variabile di ambiente di NODE_ENV=production
. Se questo è il caso puoi ancora questi pacchetti usando npm install --dev
peerDependencies
Se stai usando questo modulo, peerDependencies elenca i moduli che devi installare insieme a questo. Ad esempio, il moment-timezone
deve essere installato insieme al moment
perché è un plugin per il momento, anche se non require("moment")
direttamente require("moment")
.
preferGlobal
Una proprietà che indica che questa pagina preferisce essere installata globalmente usando npm install -g {module-name}
. Questa proprietà viene utilizzata dai pacchetti che contengono una CLI (interfaccia a riga di comando).
In tutte le altre situazioni NON dovresti usare questa proprietà.
publishConfig
PublishConfig è un oggetto con valori di configurazione che verranno utilizzati per la pubblicazione dei moduli. I valori di configurazione impostati sostituiscono la configurazione predefinita di npm.
L'uso più comune di publishConfig
è di pubblicare il tuo pacchetto su un registro privato di npm in modo da avere ancora i vantaggi di npm ma per i pacchetti privati. Questo viene fatto semplicemente impostando l'URL del tuo npm privato come valore per la chiave di registro.
files
Questa è una matrice di tutti i file da includere nel pacchetto pubblicato. È possibile utilizzare un percorso di file o un percorso di cartella. Verranno inclusi tutti i contenuti di un percorso di cartella. Ciò riduce la dimensione totale del pacchetto includendo solo i file corretti da distribuire. Questo campo funziona in congiunzione con un file di regole .npmignore
.