API programmatique pour mettre à jour les fichiers package.json
. Mise à jour et enregistre les fichiers de la même manière que le NPM CLI les gère.
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"
// ]
// }
Il existe également une fonction d'assistance exportée pour ouvrir un fichier package.json sans fonctionnalité de normalisation ni de sauvegarde supplémentaire.
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()
Crée une nouvelle instance vide de PackageJson
.
async PackageJson.create(path)
Crée un package.json
sur le chemin donné. Si l'on existe déjà, il sera écrasé.
async PackageJson.load(path, opts = {})
Charge un package.json
sur le chemin donné.
opts
: Object
peut contenir:create
: Boolean
Si vrai, un nouveau package.json sera créé si l'on n'existe pas déjà. Ne clobber pas ane package existant.json qui ne peut pas être analysé. Charge le contenu d'un fichier package.json
situé à ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = new PackageJson ( )
await pkgJson . load ( './' )
Lance une erreur au cas où un fichier package.json
est manquant ou a un contenu non valide.
async PackageJson.load(path)
statique Méthode statique de commodité qui renvoie une nouvelle instance et charge le contenu d'un fichier package.json
à partir de cet emplacement.
path
: String
qui pointe vers le dossier de où lire le package.json
de Charge le contenu d'un fichier package.json
situé à ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
async PackageJson.normalize()
Destiné à normaliser les fichiers package.json dans une arborescence Node_Modules. Une certaine normalisation de la lumière est effectuée pour s'assurer qu'elle est prête à être utilisée dans @npmcli/arborist
path
: String
qui pointe vers le dossier de où lire le package.json
deopts
: Object
peut contenir:strict
: Boolean
permet un mode strict en option lors de l'application de l'étape normalizeData
steps
: Array
Étapes de normalisation facultative qui seront appliquées au fichier package.json
, en remplaçant les étapes par défautroot
: Path
Git Root en option à fournir lors de l'application de l'étape gitHead
changes
: Array
si fourni, un message sur chaque modification apportée au Packument sera ajouté à ce tableauasync PackageJson.normalize(path, opts = {})
Commodité statique qui appelle load
avant d'appeler normalize
path
: String
qui pointe vers le dossier de où lire le package.json
deopts
: Object
peut contenir:strict
: Boolean
permet un mode strict en option lors de l'application de l'étape normalizeData
steps
: Array
Étapes de normalisation facultative qui seront appliquées au fichier package.json
, en remplaçant les étapes par défautroot
: Path
Git Root en option à fournir lors de l'application de l'étape gitHead
changes
: Array
si fourni, un message sur chaque modification apportée au Packument sera ajouté à ce tableauasync PackageJson.prepare()
Comme normalize
mais destiné à préparer des fichiers package.json pour publier.
async PackageJson.prepare(path, opts = {})
Commédité statique qui appelle load
avant d'appeler prepare
path
: String
qui pointe vers le dossier de où lire le package.json
deopts
: Object
peut contenir:strict
: Boolean
permet un mode strict en option lors de l'application de l'étape normalizeData
steps
: Array
Étapes de normalisation facultative qui seront appliquées au fichier package.json
, en remplaçant les étapes par défautroot
: Path
Git Root en option à fournir lors de l'application de l'étape gitHead
changes
: Array
si fourni, un message sur chaque modification apportée au Packument sera ajouté à ce tableauasync PackageJson.fix()
Comme normalize
mais destiné à la commande npm pkg fix
.
PackageJson.update(content)
Met à jour le contenu d'un package.json
avec le content
fourni.
content
: Object
contenant les propriétés à mettre à jour / remplacées dans le fichier package.json
. Des propriétés spéciales telles que dependencies
, devDependencies
, optionalDependencies
, peerDependencies
auront une logique spéciale pour gérer la mise à jour de ces options, telles que le tri et la déduplication.
Ajoute un nouveau script nommé new-script
à votre propriété package.json
scripts
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
scripts : {
... pkgJson . content . scripts ,
'new-script' : 'echo "Bom dia!"'
}
} )
Remarque: Lorsque vous travaillez avec les dépendances, il est important de fournir des valeurs pour tous les types de dépendances connus car la logique de mise à jour a une certaine interdépendance entre ces propriétés.
Un moyen sûr d'ajouter une devDependency
et de supprimer toutes les dépendances par les pairs d'un package.json
existant.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 qui récupère l' Object
normalisé à lire dans le fichier package.json
chargé.
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . content
// -> {
// name: 'foo',
// version: '1.0.0'
// }
async PackageJson.save()
Enregistre le content
actuel dans le même emplacement utilisé lors de l'appel load()
.
Isc