يمكنك تحسين تجربة تصحيح الأخطاء في "أدوات مطوري البرامج في Chrome" باستخدام إضافة خريطة المصدر "ignoreList
".
تُحلّل "أدوات مطوري البرامج في Chrome" حقل ignoreList
في الخرائط المصدر للمساعدة في تحسين تجربة تصحيح الأخطاء للمطوّرين. يمكنك الاطّلاع على تتبُّع تسلسل استدعاء الدوال البرمجية التالي في وحدة التحكّم. تُخفي "أدوات مطوري البرامج" جميع الإطارات التابعة لجهات خارجية تلقائيًا ولا تعرض سوى الإطارات ذات الصلة بالرمز البرمجي الخاص بك.
ما المقصود بـ ignoreList
؟
إضافات خرائط المصدر هي حقول إضافية تخزِّن معلومات تكميلية عن خريطة المصدر. وتكون هذه الحقول مسبوقة بـ x_
.
تستخدم "أدوات مطوري البرامج في Chrome" الحقل ignoreList
(إذا تم توفيره) لفلترة الرمز الذي تم إنشاؤه والسماح لمطوّري الويب بالتركيز فقط على الرمز الذي ينشئونه. على سبيل المثال، انظر إلى خريطة المصادر التالية.
/* demo.js.map */
{
"version": 3,
"mappings": "AAAAA, ..."
"sources": [
"app.js",
"components/Button.ts",
"node_modules/.../framework.js",
"node_modules/.../library.js",
...
],
"ignoreList": [2, 3],
...
}
يعرض الحقل sources
قائمة بالمصادر الأصلية التي يستخدمها الإدخال mappings
. يمكنك مشاهدة الفيديو ما هي خرائط المصدر؟ للتعرّف على آلية عمل عمليات الربط.
بما أنّ الملفَين node_modules/…/frameworks.js
وnode_modules/.../library.js
هما نصّان برمجيان تابعان لجهة خارجية، يمكنك تحديد الحقل ignoreList
للإشارة إلى مواضعهما في الحقل sources
. وستطبِّق "أدوات مطوري البرامج في Chrome" هذه المعلومات لإخفاء الإطارات من هذه الملفات التي تم تجاهلها.
ينطبق ذلك أيضًا على حزمة الطلبات في لوحة المصادر أثناء تصحيح أخطاء نقاط التوقف.
في الخلفية، تم تفعيل إعداد إضافي في "أدوات مطوري البرامج" بشكل تلقائي: إضافة النصوص البرمجية المعروفة التابعة لجهات خارجية إلى قائمة التجاهل تلقائيًا. يمكنك العثور عليه في "أدوات مطوري البرامج" > الإعدادات > قائمة التجاهل:
باستخدام حقل خريطة المصدر ignoreList
، يتوفّر لك خيار إخفاء الملفات التي تم تجاهلها في لوحة المصادر للتركيز على الرمز البرمجي.
كيفية تعبئة ignoreList
الخبر السار هو أنّ هناك أُطر عمل مثل Angular وNuxt سبق أن تم ضبطها على ignoreList
في خرائط المصدر. اعمد إلى الترقية إلى أحدث إصدار، وسيعمل بشكلٍ فوري. يمكنك إجراء تحسينات على عملية تتبُّع تسلسل استدعاء الدوال البرمجية بسهولة.
من ناحية أخرى، توفّر أدوات إنشاء مثل Vite وRollup إعدادات لضبطها. يتوفّر أيضًا مكوّن webpack الإضافي لإجراء ذلك.
إذا كنت تعمل على صيانة إطار عمل أو مكتبة، فمن الضروري أن تفهم كيفية تنفيذ هذه الإعدادات لتحسين تجربة تصحيح الأخطاء للمستخدمين. انظر القسم التالي لمشاهدة كيف قامت Angular وNuxt بذلك وراء الكواليس.
ماذا لو لم يدعمه إطار العمل وأداة التصميم المفضّل لديك حتى الآن؟
نحن نعمل جاهدين على تطوير أُطر العمل وأدوات للوصول إلى هذه الإعدادات الجديدة. يمكنك أيضًا المساعدة من خلال إشعار مستخدمي الصيانة بشأن هذه الميزة. على سبيل المثال، يمكنك الإبلاغ عن مشكلة في المستودع.
بدلاً من ذلك، يمكنك يدويًا إضافة النصوص البرمجية غير ذات الصلة إلى قائمة التجاهل مباشرةً من شجرة الملفات في "أدوات مطوّري البرامج" > المصادر > لوحة الصفحة لتحقيق نتيجة مشابهة.
دراسات الحالة: تنفيذ Nuxt وAngular
ألق نظرة على دراسات الحالة التالية.
ignoreList
في Nuxt
بدءًا من الإصدار 3.3.1 من Nuxt، تم وضع علامة على محتوىَي node_modules
وNuxt buildDir
كمحتوى "يتجاهله برامج تصحيح الأخطاء".
تم تحقيق ذلك من خلال تغيير في إعدادات إصدار Nuxt باستخدام Vite وRollup:
/* vite.config.ts */
const ctx: ViteBuildContext = {
config: vite.mergeConfig(
build: {
rollupOptions: {
output: {
sourcemapIgnoreList: (relativeSourcePath) => {
return relativeSourcePath.includes('/node_modules/') || relativeSourcePath.includes(ctx.nuxt.options.buildDir)
},
}
})
يود فريق DevTools التعبير عن الامتنان لفريقَي Vite وNuxt على إتاحة ذلك. نحن نُقدِّر جهودك وتعاونك التي كانت ضرورية لنجاح عملية التنفيذ هذه. شكرًا مرة أخرى لفريقَي Vite وNuxt على مساهماتك.
ignoreList
في Angular
بدايةً من الإصدار 14.1.0 من Angular، تم وضع علامة "للتجاهل" على محتوى المجلد node_modules
وwebpack
.
وقد تم تحقيق ذلك من خلال تغيير في angular-cli
من خلال إنشاء مكوّن إضافي يربط بوحدة Compiler
على الويب.
يعمل مكوِّن webpack الإضافي الذي أنشأه مهندسونا على جذب عنصر الجذب إلى المرحلة PROCESS_ASSETS_STAGE_DEV_TOOLING
وملء الحقل ignoreList
في خرائط المصدر بمواد العرض النهائية التي تنشئها حزمة الويب وعمليات تحميل المتصفّح.
const map = JSON.parse(mapContent) as SourceMap;
const ignoreList = [];
for (const [index, path] of map.sources.entries()) {
if (path.includes('/node_modules/') || path.startsWith('webpack/')) {
ignoreList.push(index);
}
}
map[`ignoreList`] = ignoreList;
compilation.updateAsset(name, new RawSource(JSON.stringify(map)));
للاطّلاع على مزيد من المعلومات حول التحسينات الأخرى في تصحيح الأخطاء في Angular في "أدوات مطوري البرامج"، يُرجى الاطّلاع على دراسة حالة: Better Angular Debugging باستخدام "أدوات مطوّري البرامج".
يود فريق "أدوات مطوري البرامج في Chrome" أن يعبّر عن امتناننا لفريق Angular على مساهماته القيّمة في نجاح عملية التنفيذ هذه. كانت جهودك وتعاونك ضرورية، ونقدّر عملك الشاق. شكرًا لفريق Angular على إتاحة هذه الفرصة.