Programmatische API zum Aktualisieren von package.json
-Dateien. Aktualisiert und speichert Dateien auf die gleiche Weise wie die NPM -CLI .
npm install @npmcli/package-json
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( path )
// $ cat package.json
// {
// "name": "foo",
// "version": "1.0.0",
// "dependencies": {
// "a": "^1.0.0",
// "abbrev": "^1.1.1"
// }
// }
pkgJson . update ( {
dependencies : {
a : '^1.0.0' ,
b : '^1.2.3' ,
} ,
workspaces : [
'./new-workspace' ,
] ,
} )
await pkgJson . save ( )
// $ cat package.json
// {
// "name": "foo",
// "version": "1.0.0",
// "dependencies": {
// "a": "^1.0.0",
// "b": "^1.2.3"
// },
// "workspaces": [
// "./new-workspace"
// ]
// }
Es gibt auch eine Helferfunktion, die für das Öffnen einer Paket.json -Datei ohne zusätzliche Normalisierung oder Speichernfunktionalität exportiert wird.
const { readPackage } = require ( '@npmcli/package-json/lib/read-package' )
const rawData = await readPackage ( './package.json' )
// rawData will now have the package.json contents with no changes or normalizations
constructor()
Erstellt eine neue leere Instanz von PackageJson
.
async PackageJson.create(path)
Erstellt ein leeres package.json
auf dem angegebenen Pfad. Wenn man bereits existiert, wird es überschrieben.
async PackageJson.load(path, opts = {})
Lädt ein package.json
auf dem angegebenen Pfad.
opts
: Object
kann enthalten:create
: Boolean
Wenn wahr, wird ein neues Paket.json erstellt, wenn es noch nicht existiert. Wird nicht ein vorhandenes Paket für Paket kuscheln, das nicht analysiert werden kann. Lädt die Inhalte einer package.json
-Datei unter ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = new PackageJson ( )
await pkgJson . load ( './' )
Wirft einen Fehler aus, falls eine package.json
-Datei fehlt oder ungültige Inhalte enthält.
async PackageJson.load(path)
Convenience statische Methode, die eine neue Instanz zurückgibt und den Inhalt einer package.json
-Datei von diesem Ort lädt.
path
: String
, die auf den Ordner hinweist, von dem Sie das package.json
aus lesen können Lädt die Inhalte einer package.json
-Datei unter ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
async PackageJson.normalize()
Für die Normalisierung von Paket.json -Dateien in einem NODE_MODULES -Baum bestimmt. Es wird eine leichte Normalisierung durchgeführt, um sicherzustellen, dass es für die Verwendung in @npmcli/arborist
bereit ist
path
: String
, die auf den Ordner hinweist, von dem Sie das package.json
aus lesen könnenopts
: Object
kann enthalten:strict
: Boolean
ermöglicht den optionalen strengen Modus, wenn Sie den normalizeData
-Schritt anwendensteps
: Array
Optionale Normalisierungsschritte, die auf die Datei package.json
angewendet werden, wobei die Standardschritte ersetzt werdenroot
: Path
Optionales Git -Root, das bei der Anwendung des gitHead
-Schritts bereitgestellt werden musschanges
: Array
Wenn angegeben, wird eine Nachricht zu jeder Änderung, die am Packument vorgenommen wurde, diesem Array hinzugefügtasync PackageJson.normalize(path, opts = {})
Convenience statisch, das load
, bevor sie anrufen, normalize
path
: String
, die auf den Ordner hinweist, von dem Sie das package.json
aus lesen könnenopts
: Object
kann enthalten:strict
: Boolean
ermöglicht den optionalen strengen Modus, wenn der Schritt normalizeData
angewendet wirdsteps
: Array
Optionale Normalisierungsschritte, die auf die Datei package.json
angewendet werden, wobei die Standardschritte ersetzt werdenroot
: Path
Optionales Git -Root, das bei der Anwendung des gitHead
-Schritts bereitgestellt werden musschanges
: Array
Wenn angegeben, wird eine Nachricht zu jeder Änderung, die am Packument vorgenommen wurde, diesem Array hinzugefügtasync PackageJson.prepare()
Wie normalize
, aber für die Vorbereitung von Paket.json -Dateien für die Veröffentlichung bestimmt.
async PackageJson.prepare(path, opts = {})
Convenience statisch, der load
bevor sie anrufen, prepare
path
: String
, die auf den Ordner hinweist, von dem Sie das package.json
aus lesen könnenopts
: Object
kann enthalten:strict
: Boolean
ermöglicht den optionalen strengen Modus, wenn Sie den normalizeData
-Schritt anwendensteps
: Array
Optionale Normalisierungsschritte, die auf die Datei package.json
angewendet werden, wobei die Standardschritte ersetzt werdenroot
: Path
Optionales Git -Root, das bei der Anwendung des gitHead
-Schritts bereitgestellt werden musschanges
: Array
Wenn angegeben, wird eine Nachricht zu jeder Änderung, die am Packument vorgenommen wurde, diesem Array hinzugefügtasync PackageJson.fix()
Wie normalize
, aber für den Befehl npm pkg fix
vorgesehen.
PackageJson.update(content)
Aktualisiert den Inhalt eines package.json
mit dem bereitgestellten content
.
content
: Object
das die Eigenschaften enthält, die in der Datei package.json
aktualisiert/ersetzt werden sollen. Spezielle Eigenschaften wie dependencies
, devDependencies
, optionalDependencies
und peerDependencies
haben eine spezielle Logik, um die Aktualisierung dieser Optionen wie Sortieren und Deduplizierung zu verarbeiten.
Fügt ein neues Skript mit dem Namen new-script
zu Ihrer Eigenschaft package.json
scripts
hinzu:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
scripts : {
... pkgJson . content . scripts ,
'new-script' : 'echo "Bom dia!"'
}
} )
Hinweis: Bei der Arbeit mit Abhängigkeiten ist es wichtig, Werte für alle bekannten Abhängigkeitstypen bereitzustellen, da die Aktualisierungslogik zwischen diesen Eigenschaften eine gewisse gegenseitige Abhängigkeit hat.
Eine sichere Möglichkeit, eine devDependency
hinzuzufügen und alle Peer -Abhängigkeiten eines vorhandenen package.json
zu entfernen.JSON:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
dependencies : pkgJson . content . dependencies ,
devDependencies : {
... pkgJson . content . devDependencies ,
foo : '^[email protected]' ,
} ,
peerDependencies : { } ,
optionalDependencies : pkgJson . content . optionalDependencies ,
} )
PackageJson.content
Getter, der das normalisierte Object
abruft, das aus der Datei package.json
-Datei gelesen wurde.
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . content
// -> {
// name: 'foo',
// version: '1.0.0'
// }
async PackageJson.save()
Speichert den aktuellen content
an demselben Speicherort, der beim Aufrufen load()
verwendet wird.
ISC