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.0installerà quella versione specifica del modulo. - la versione minore più recente :
^0.1.0installerà 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.xo~0.1.0installerà 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.0o1.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,#tago#branch:- GitHub :
user/projectouser/project#v1.0.0 - url :
git://gitlab.com/user/project.gitogit://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 .