جافاسكريبت - استيراد الملفات في حزمة Node بدون تضمين اسم مجلد dist
لدي هيكل الدليل التالي لمكتبة سيتم استيرادها من قبل مشروع Node.js آخر.
my-lib/
├─ dist/
│ ├─ index.js
│ ├─ foo.js
├─ src/
│ ├─ index.ts
│ ├─ foo.ts
├─ package.json
لدي ملف package.json التالي
{
"name": "my-lib",
"version": "1.0.0",
"description": "",
"main": "dist/index.js"
}
لقد قمت بتحديد main كـ dist/index.js، لذا إذا فهمت بشكل صحيح، يمكن استيراد الأعضاء المصدَّرَين من index.ts (js) على شكل import abc from 'my-lib'. إذا اضطررت للوصول إلى الأعضاء المصدَّرَة من ملف foo.ts (js) فقد أنتهي بالقيام بـ import foo from 'my-lib/dist/foo'. لذا هنا يجب علي تحديد اسم مجلد dist في مسار الاستيراد. هل هناك طريقة لتحديد فقط 'my-lib/foo' بدون ذكر اسم مجلد dist؟ (تمامًا مثل استيراد ملف dist/index.js.)
الإجابة رقم 1
يمكن تحقيق ذلك باستخدام تصديرات المسارات الفرعية في package.json.
"main": "./dist/index.js",
"exports": {
".": "./dist/index.js",
"./foo": "./dist/foo.js"
}
الإجابة رقم 2
كما هو موضح في وثائق node.js، من الممكن إضافة تصدير المسارات الفرعية. تحقق من ذلك هنا.
في حالتك، يجب أن يبدو مشابهًا لما يلي
{
"name": "my-lib",
"version": "1.0.0",
"description": "",
"main": "./dist/index.js",
"exports": {
".": "./dist/index.js",
"./foo": "./dist/foo.js"
}
}
بعد التصدير بهذه الطريقة يمكنك الاستيراد على النحو التالي
import foo from 'my-lib/foo'
