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
إذا كان صحيحًا ، سيتم إنشاء حزمة جديدة. لن clobber ane package.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()
مخصص لتطبيع ملفات. json في شجرة node_modules. يتم إجراء بعض تطبيع الضوء للتأكد من أنه جاهز للاستخدام في @npmcli/arborist
path
: String
تشير إلى المجلد من أين تقرأ package.json
opts
: يمكن أن يحتوي Object
على:strict
: Boolean
يمكّن الوضع الصارم الاختياري عند تطبيق خطوة normalizeData
steps
: Array
التطبيع الاختيارية التي سيتم تطبيقها على ملف package.json
، لاستبدال الخطوات الافتراضيةroot
: Path
جذر git اختياري لتوفيره عند تطبيق خطوة gitHead
changes
: Array
إذا تم توفيره ، ستتم إضافة رسالة حول كل تغيير تم إجراؤه إلى الحزمة إلى هذه الصفيفasync PackageJson.normalize(path, opts = {})
ساكنة الراحة التي تستدعي load
قبل استدعاء normalize
path
: String
تشير إلى المجلد من أين تقرأ package.json
opts
: يمكن أن يحتوي Object
على:strict
: Boolean
يمكّن الوضع الصارم الاختياري عند تطبيق خطوة normalizeData
steps
: Array
التطبيع الاختيارية التي سيتم تطبيقها على ملف package.json
، لاستبدال الخطوات الافتراضيةroot
: Path
جذر git اختياري لتوفيره عند تطبيق خطوة gitHead
changes
: Array
إذا تم توفيره ، ستتم إضافة رسالة حول كل تغيير تم إجراؤه إلى الحزمة إلى هذه الصفيف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 اختياري لتوفيره عند تطبيق خطوة gitHead
changes
: Array
إذا تم توفيره ، ستتم إضافة رسالة حول كل تغيير تم إجراؤه إلى الحزمة إلى هذه الصفيف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
الخاص بك:
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