Node.js
package.json
Zoeken…
Opmerkingen
U kunt package.json
met
npm init
waarin u wordt gevraagd naar basisfeiten over uw projecten, inclusief licentie-ID .
Fundamentele projectdefinitie
{
"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"]
}
Veld | Beschrijving |
---|---|
naam | een verplicht veld om een pakket te installeren. Moet kleine letters zijn, één woord zonder spaties. (Streepjes en onderstrepingstekens toegestaan) |
versie | een verplicht veld voor de pakketversie met behulp van semantische versiebeheer . |
Beschrijving | een korte beschrijving van het project |
auteur | specificeert de auteur van het pakket |
bijdragers | een reeks objecten, één voor elke bijdrager |
trefwoorden | een reeks strings, dit helpt mensen uw pakket te vinden |
afhankelijkheden
"afhankelijkheden": {"module-naam": "0.1.0"}
- exact :
0.1.0
installeert die specifieke versie van de module. - nieuwste secundaire versie :
^0.1.0
installeert de nieuwste secundaire versie, bijvoorbeeld0.2.0
, maar installeert geen module met een hogere hoofdversie, bijvoorbeeld1.0.0
- nieuwste patch :
0.1.x
of~0.1.0
installeert de nieuwste beschikbare0.1.4
, bijvoorbeeld0.1.4
, maar installeert geen module met een hogere hoofd- of secundaire versie, bijv.0.2.0
of1.0.0
. - wildcard :
*
installeert de nieuwste versie van de module. - git repository : het volgende zal een tarball installeren van de master branch van een git repo. Een
#sha
,#tag
of#branch
kan ook worden verstrekt:- GitHub :
user/project
ofuser/project#v1.0.0
- url :
git://gitlab.com/user/project.git
ofgit://gitlab.com/user/project.git#develop
- GitHub :
- lokaal pad :
file:../lib/project
Nadat u ze aan uw package.json hebt toegevoegd, gebruikt u de opdracht npm install
in uw projectmap in terminal.
devDependencies
"devDependencies": {
"module-name": "0.1.0"
}
Voor afhankelijkheden die alleen nodig zijn voor ontwikkeling, zoals het testen van stylingproxy's ext. Die dev-afhankelijkheden worden niet geïnstalleerd wanneer "npm install" in de productiemodus wordt uitgevoerd.
scripts
U kunt scripts definiëren die kunnen worden uitgevoerd of worden geactiveerd voor of na een ander script.
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
In dit geval kunt u het script uitvoeren door een van deze opdrachten uit te voeren:
$ npm run-script test
$ npm run test
$ npm test
$ npm t
Vooraf gedefinieerde scripts
Scriptnaam | Beschrijving |
---|---|
prepublish | Uitvoeren voordat het pakket is gepubliceerd. |
publiceren, publiceren | Uitvoeren nadat het pakket is gepubliceerd. |
preinstall | Uitvoeren voordat het pakket is geïnstalleerd. |
installeren, postinstalleren | Uitvoeren nadat het pakket is geïnstalleerd. |
pre-installatie, verwijdering | Uitvoeren voordat het pakket is verwijderd. |
postuninstall | Uitvoeren nadat het pakket is verwijderd. |
vorige versie | Voer uit voordat u de pakketversie tegenkomt. |
postversion | Voer na het uitvoeren van de pakketversie uit. |
pretest, test, posttest | Uitgevoerd door het npm test |
prestop, stop, poststop | Uitgevoerd door het npm stop stopcommando |
voorstart, start, poststart | Uitgevoerd met de opdracht npm start |
herstart, herstart, herstart | Uitgevoerd door het npm restart |
Door de gebruiker gedefinieerde scripts
U kunt ook uw eigen scripts definiëren op dezelfde manier als met de vooraf gedefinieerde scripts:
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
In dit geval kunt u het script uitvoeren door een van deze opdrachten uit te voeren:
$ npm run-script ci
$ npm run ci
Gebruikersgedefinieerde scripts ook dragers voor en na scripts, zoals in het voorbeeld hierboven.
Uitgebreide projectdefinitie
Sommige van de extra attributen worden ontleed door de npm-website zoals repository
, bugs
of homepage
en getoond in de infobox voor dit pakket
{
"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
]
}
Veld | Beschrijving |
---|---|
hoofd | Invoerscript voor dit pakket. Dit script wordt geretourneerd wanneer een gebruiker het pakket nodig heeft. |
bewaarplaats | Locatie en type van de openbare repository |
bugs | Bugtracker voor dit pakket (bijv. Github) |
Startpagina | Startpagina voor dit pakket of het algemene project |
bestanden | Lijst met bestanden en mappen die moeten worden gedownload wanneer een gebruiker een npm install <packagename> |
Pakket verkennen. Json
Een package.json
bestand, meestal aanwezig in de projectwortel, bevat metagegevens over uw app of module en de lijst met afhankelijkheden die vanaf npm moeten worden geïnstalleerd bij het uitvoeren van npm install
.
Typ npm init
in uw opdrachtprompt om een package.json
te initialiseren.
Gebruik een package.json
met standaardwaarden:
npm init --yes
# or
npm init -y
Gebruik een pakket om een pakket te installeren en op te slaan in package.json
:
npm install {package name} --save
U kunt ook de steno-notatie gebruiken:
npm i -S {package name}
NPM-aliassen -S
tot --save
en -D
tot --save-dev
om respectievelijk te besparen op uw productie- of ontwikkelingsafhankelijkheid.
Het pakket verschijnt in uw afhankelijkheden; als u --save-dev
plaats van --save
, verschijnt het pakket in uw devDependencies.
Belangrijke eigenschappen van 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"
]
}
Informatie over enkele belangrijke eigenschappen:
name
De unieke naam van uw pakket en zou in kleine letters moeten zijn. Deze eigenschap is vereist en uw pakket kan niet zonder deze worden geïnstalleerd.
- De naam moet kleiner zijn dan of gelijk zijn aan 214 tekens.
- De naam mag niet beginnen met een punt of een onderstrepingsteken.
- Nieuwe pakketten mogen geen hoofdletters bevatten.
version
De versie van het pakket wordt gespecificeerd door Semantic Versioning (semver). Die ervan uitgaat dat een versienummer wordt geschreven als MAJOR.MINOR.PATCH en u verhoogt de:
- GROTE versie wanneer u incompatibele API-wijzigingen aanbrengt
- MINOR versie wanneer u functionaliteit toevoegt op een achterwaarts compatibele manier
- PATCH-versie wanneer u achterwaarts compatibele bugfixes maakt
description
De beschrijving van het project. Probeer het kort en bondig te houden.
author
De auteur van dit pakket.
bin
Een object dat wordt gebruikt om binaire scripts uit uw pakket bloot te leggen. Het object veronderstelt dat de sleutel de naam van het binaire script is en de waarde een relatief pad naar het script.
Deze eigenschap wordt gebruikt door pakketten die een CLI (opdrachtregelinterface) bevatten.
script
Een object dat aanvullende npm-opdrachten blootstelt. Het object gaat ervan uit dat de sleutel de opdracht npm is en de waarde het scriptpad. Deze scripts kunnen worden uitgevoerd wanneer u npm run {command name}
of npm run-script {command name}
.
Pakketten die een opdrachtregelinterface bevatten en lokaal worden geïnstalleerd, kunnen zonder relatief pad worden opgeroepen. Dus in plaats van ./node-modules/.bin/mocha
aan te roepen, ./node-modules/.bin/mocha
u ook direct mocha
bellen.
main
Het belangrijkste toegangspunt tot uw pakket. Wanneer aanroep require('{module name}')
in het knooppunt, is dit het werkelijke bestand dat vereist is.
Het wordt ten zeerste aangeraden dat het vereisen van het hoofdbestand geen bijwerkingen veroorzaakt. Als u bijvoorbeeld het hoofdbestand vereist, mag u geen HTTP-server opstarten of verbinding maken met een database. In plaats daarvan moet u zoiets als exports.init = function () {...}
in uw hoofdscript.
keywords
Een reeks trefwoorden die uw pakket beschrijven. Hiermee kunnen mensen uw pakket vinden.
devDependencies
Dit zijn de afhankelijkheden die alleen zijn bedoeld voor het ontwikkelen en testen van uw module. De afhankelijkheden worden automatisch geïnstalleerd, tenzij de variabele NODE_ENV=production
is ingesteld. Als dit het geval is, kunt u deze pakketten nog steeds gebruiken met npm install --dev
peerDependencies
Als u deze module gebruikt, vermeldt peerDependencies de modules die u naast deze moet installeren. moment-timezone
moet bijvoorbeeld naast moment
worden geïnstalleerd omdat het een plug-in voor moment is, zelfs als het niet direct require("moment")
.
preferGlobal
Een eigenschap die aangeeft dat deze pagina bij voorkeur wereldwijd wordt geïnstalleerd met behulp van npm install -g {module-name}
. Deze eigenschap wordt gebruikt door pakketten die een CLI (opdrachtregelinterface) bevatten.
In alle andere situaties mag u deze eigenschap NIET gebruiken.
publishConfig
De publishConfig is een object met configuratiewaarden die zullen worden gebruikt voor publicatiemodules. De ingestelde configuratiewaarden hebben voorrang op uw standaard npm-configuratie.
Het meest voorkomende gebruik van publishConfig
is om uw pakket te publiceren naar een privé npm-register, zodat u nog steeds de voordelen van npm hebt, maar voor privépakketten. Dit wordt gedaan door eenvoudig de URL van uw privé-npm in te stellen als waarde voor de registersleutel.
files
Dit is een reeks van alle bestanden die in het gepubliceerde pakket moeten worden opgenomen. Een bestandspad of mappad kan worden gebruikt. Alle inhoud van een mappad wordt opgenomen. Dit vermindert de totale omvang van uw pakket door alleen de juiste te distribueren bestanden op te nemen. Dit veld werkt in combinatie met een .npmignore
.