โปรแกรม API เพื่ออัปเดตไฟล์ package.json
อัปเดตและบันทึกไฟล์ในลักษณะเดียวกับที่ 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"
// ]
// }
นอกจากนี้ยังมีฟังก์ชั่นผู้ช่วยส่งออกเพื่อเปิดไฟล์ package.JSON โดยไม่มีการทำให้เป็นมาตรฐานเพิ่มเติมหรือการบันทึกฟังก์ชั่น
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()
สร้างอินสแตนซ์ที่ว่างเปล่าใหม่ของ PackageJson
async PackageJson.create(path)
สร้าง package.json
ที่ว่างเปล่า json ที่เส้นทางที่กำหนด หากมีอยู่แล้วมันจะถูกเขียนทับ
async PackageJson.load(path, opts = {})
โหลด package.json
ที่เส้นทางที่กำหนด
opts
: Object
สามารถมี:create
: Boolean
ถ้าเป็นจริงแพ็คเกจใหม่ json จะถูกสร้างขึ้นหากไม่มีอยู่ จะไม่ปิดบังแพ็คเกจที่มีอยู่ json ที่ไม่สามารถแยกวิเคราะห์ได้ โหลดเนื้อหาของไฟล์ package.json
ที่อยู่ที่ ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = new PackageJson ( )
await pkgJson . load ( './' )
โยนข้อผิดพลาดในกรณีที่ไฟล์ package.json
หายไปหรือมีเนื้อหาที่ไม่ถูกต้อง
async PackageJson.load(path)
วิธีการคงที่แบบคงที่ที่ส่งคืนอินสแตนซ์ใหม่และโหลดเนื้อหาของไฟล์ package.json
จากตำแหน่งนั้น
path
: String
ที่ชี้ไปที่โฟลเดอร์จากที่ที่จะอ่าน package.json
จาก โหลดเนื้อหาของไฟล์ package.json
ที่อยู่ที่ ./
:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
async PackageJson.normalize()
มีไว้สำหรับการทำให้เป็นมาตรฐาน package.json ไฟล์ในแผนผัง node_modules การปรับสภาพแสงบางอย่างเสร็จสิ้นเพื่อให้แน่ใจว่าพร้อมใช้งานใน @npmcli/arborist
path
: String
ที่ชี้ไปที่โฟลเดอร์จากที่ที่จะอ่าน package.json
จากopts
: Object
สามารถมี:strict
: Boolean
เปิดใช้งานโหมดที่เข้มงวดทางเลือกเมื่อใช้ขั้นตอน normalizeData
steps
: Array
ขั้นตอนการทำให้เป็นมาตรฐานทางเลือกที่จะนำไปใช้กับไฟล์ package.json
แทนที่ขั้นตอนเริ่มต้นroot
: Path
เป็นตัวเลือก git root ที่จะให้เมื่อใช้ขั้นตอน gitHead
changes
: Array
หากมีให้ข้อความเกี่ยวกับการเปลี่ยนแปลงแต่ละครั้งที่ทำไปยัง packument จะถูกเพิ่มลงในอาร์เรย์นี้async PackageJson.normalize(path, opts = {})
ความสะดวกคงที่ที่โทร load
ก่อนโทรหา normalize
path
: String
ที่ชี้ไปที่โฟลเดอร์จากที่ที่จะอ่าน package.json
จากopts
: Object
สามารถมี:strict
: Boolean
เปิดใช้งานโหมดที่เข้มงวดทางเลือกเมื่อใช้ขั้นตอน normalizeData
steps
: Array
ขั้นตอนการทำให้เป็นมาตรฐานทางเลือกที่จะนำไปใช้กับไฟล์ package.json
แทนที่ขั้นตอนเริ่มต้นroot
: Path
เป็นตัวเลือก git root ที่จะให้เมื่อใช้ขั้นตอน gitHead
changes
: Array
หากมีให้ข้อความเกี่ยวกับการเปลี่ยนแปลงแต่ละครั้งที่ทำไปยัง packument จะถูกเพิ่มลงในอาร์เรย์นี้async PackageJson.prepare()
เช่นเดียวกับ normalize
แต่มีไว้สำหรับการเตรียม package.json ไฟล์สำหรับการเผยแพร่
async PackageJson.prepare(path, opts = {})
ความสะดวกคงที่ที่โทร load
ก่อนโทร prepare
path
: String
ที่ชี้ไปที่โฟลเดอร์จากที่ที่จะอ่าน package.json
จากopts
: Object
สามารถมี:strict
: Boolean
เปิดใช้งานโหมดที่เข้มงวดทางเลือกเมื่อใช้ขั้นตอน normalizeData
steps
: Array
ขั้นตอนการทำให้เป็นมาตรฐานทางเลือกที่จะนำไปใช้กับไฟล์ package.json
แทนที่ขั้นตอนเริ่มต้นroot
: Path
เป็นตัวเลือก git root ที่จะให้เมื่อใช้ขั้นตอน gitHead
changes
: Array
หากมีให้ข้อความเกี่ยวกับการเปลี่ยนแปลงแต่ละครั้งที่ทำไปยัง packument จะถูกเพิ่มลงในอาร์เรย์นี้async PackageJson.fix()
ชอบ normalize
แต่มีไว้สำหรับคำสั่ง npm pkg fix
PackageJson.update(content)
อัปเดตเนื้อหาของ package.json
พร้อม content
ที่ให้ไว้
content
: Object
ที่มีคุณสมบัติที่จะอัปเดต/แทนที่ในไฟล์ package.json
คุณสมบัติพิเศษเช่น dependencies
, devDependencies
, optionalDependencies
, peerDependencies
จะมีตรรกะพิเศษเพื่อจัดการการอัปเดตของตัวเลือกเหล่านี้เช่นการเรียงลำดับและการซ้ำซ้อน
เพิ่มสคริปต์ใหม่ที่ชื่อว่า new-script
ไปยัง package.json
scripts
Property:
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . update ( {
scripts : {
... pkgJson . content . scripts ,
'new-script' : 'echo "Bom dia!"'
}
} )
หมายเหตุ: เมื่อทำงานกับการพึ่งพาการพึ่งพาสิ่งสำคัญคือการให้ค่าสำหรับประเภทการพึ่งพาที่รู้จักทั้งหมดเนื่องจากตรรกะการอัพเดทมีการพึ่งพาซึ่งกันและกันระหว่างคุณสมบัติเหล่านี้
วิธีที่ปลอดภัยในการเพิ่ม devDependency
และลบการพึ่งพาเพียร์ทั้งหมดของ package.json
ที่มีอยู่ 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 ที่ดึง Object
ที่ถูกอ่านออกจากไฟล์ package.json
ที่โหลด
const PackageJson = require ( '@npmcli/package-json' )
const pkgJson = await PackageJson . load ( './' )
pkgJson . content
// -> {
// name: 'foo',
// version: '1.0.0'
// }
async PackageJson.save()
บันทึก content
ปัจจุบันไปยังตำแหน่งเดียวกับที่ใช้เมื่อโทร load()
ISC