API terprogram untuk memperbarui file package.json
. Memperbarui dan menyimpan file dengan cara yang sama seperti NPM CLI menanganinya.
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"
// ]
// }
Ada juga fungsi pembantu yang diekspor untuk membuka file package.json tanpa normalisasi tambahan atau fungsi menghemat.
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()
Membuat instance baru dari PackageJson
.
async PackageJson.create(path)
Membuat package.json
kosong.json di jalur yang diberikan. Jika ada yang sudah ada, itu akan ditimpa.
async PackageJson.load(path, opts = {})
Memuat package.json
di jalur yang diberikan.
opts
: Object
dapat berisi:create
: Boolean
Jika benar, paket baru.json akan dibuat jika tidak ada. Tidak akan clobber ane paket yang ada.json yang tidak dapat diuraikan. Memuat isi file package.json
yang terletak di ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = new PackageJson ( )
await pkgJson . load ( './' )
Melempar kesalahan jika file package.json
tidak ada atau memiliki konten yang tidak valid.
async PackageJson.load(path)
Metode statis kenyamanan yang mengembalikan instance baru dan memuat konten file package.json
dari lokasi itu.
path
: String
yang menunjuk ke folder dari mana harus membaca package.json
dari Memuat isi file package.json
yang terletak di ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
async PackageJson.normalize()
Dimaksudkan untuk menormalkan file package.json di pohon node_modules. Beberapa normalisasi cahaya dilakukan untuk memastikan bahwa siap digunakan di @npmcli/arborist
path
: String
yang menunjuk ke folder dari mana harus membaca package.json
dariopts
: Object
dapat berisi:strict
: Boolean
memungkinkan mode ketat opsional saat menerapkan langkah normalizeData
steps
: Array
Langkah Normalisasi Opsional Yang Akan Diterapkan ke File package.json
, Mengganti Langkah Defaultroot
: Path
Opsional Git Root Untuk Disediakan Saat Menerapkan Langkah gitHead
changes
: Array
Jika Disediakan, pesan tentang setiap perubahan yang dilakukan pada paket akan ditambahkan ke array iniasync PackageJson.normalize(path, opts = {})
Kenyamanan statis yang memanggil load
sebelum memanggil normalize
path
: String
yang menunjuk ke folder dari mana harus membaca package.json
dariopts
: Object
dapat berisi:strict
: Boolean
memungkinkan mode ketat opsional saat menerapkan langkah normalizeData
steps
: Array
Langkah Normalisasi Opsional Yang Akan Diterapkan ke File package.json
, Mengganti Langkah Defaultroot
: Path
Opsional Git Root Untuk Disediakan Saat Menerapkan Langkah gitHead
changes
: Array
Jika Disediakan, pesan tentang setiap perubahan yang dilakukan pada paket akan ditambahkan ke array iniasync PackageJson.prepare()
Seperti normalize
tetapi dimaksudkan untuk menyiapkan file package.json untuk diterbitkan.
async PackageJson.prepare(path, opts = {})
Kenyamanan statis yang memanggil load
sebelum menelepon prepare
path
: String
yang menunjuk ke folder dari mana harus membaca package.json
dariopts
: Object
dapat berisi:strict
: Boolean
memungkinkan mode ketat opsional saat menerapkan langkah normalizeData
steps
: Array
Langkah Normalisasi Opsional Yang Akan Diterapkan ke File package.json
, Mengganti Langkah Defaultroot
: Path
Opsional Git Root Untuk Disediakan Saat Menerapkan Langkah gitHead
changes
: Array
Jika Disediakan, pesan tentang setiap perubahan yang dilakukan pada paket akan ditambahkan ke array iniasync PackageJson.fix()
Seperti normalize
tetapi dimaksudkan untuk perintah npm pkg fix
.
PackageJson.update(content)
Memperbarui konten package.json
dengan content
yang disediakan.
content
: Object
yang berisi properti yang akan diperbarui/diganti dalam file package.json
. Properti khusus seperti dependencies
, devDependencies
, optionalDependencies
, peerDependencies
akan memiliki logika khusus untuk menangani pembaruan opsi ini, seperti penyortiran dan deduplikasi.
Menambahkan skrip baru bernama new-script
ke properti package.json
scripts
Anda:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
scripts : {
... pkgJson . content . scripts ,
'new-script' : 'echo "Bom dia!"'
}
} )
Catatan: Saat bekerja dengan dependensi, penting untuk memberikan nilai untuk semua jenis ketergantungan yang diketahui karena logika pembaruan memiliki beberapa saling ketergantungan di antara properti ini.
Cara yang aman untuk menambahkan devDependency
dan menghapus semua dependensi rekan dari package.json
yang ada.
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 yang mengambil Object
yang dinormalisasi dibaca dari file package.json
yang dimuat.
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . content
// -> {
// name: 'foo',
// version: '1.0.0'
// }
async PackageJson.save()
Menyimpan content
saat ini ke lokasi yang sama yang digunakan saat memanggil load()
.
ISC