SourceMapDevToolPlugin
يعطيك هذا plugin تحكمًا أدق في إنشاء source maps. قد يفعّله webpack تلقائيًا عند استخدام بعض قيم خيار الإعداد devtool.
new webpack.SourceMapDevToolPlugin(options);الخيارات
يدعم plugin الخيارات التالية:
-
test(stringRegExpfunction (asset) => boolean[string, RegExp, function (asset) => boolean]): يضمّن source maps للـ modules حسب الامتداد. القيمة الافتراضية تشمل.jsو.mjsو.css. -
include(stringRegExpfunction (asset) => boolean[string, RegExp, function (asset) => boolean]): يضمّن source maps لمسارات modules التي تطابق القيمة المحددة. -
exclude(stringRegExpfunction (asset) => boolean[string, RegExp], function (asset) => boolean): يستبعد modules المطابقة من إنشاء source maps. -
filename(string): يحدد اسم ملف SourceMap الناتج. إذا لم تحدد قيمة، فسيُضمّن source map داخل الملف. -
append(stringfunctionfalse): يضيف القيمة المحددة إلى asset الأصلي. غالبًا تكون تعليق#sourceMappingURL. تُستبدل[url]بعنوان URL الخاص بملف source map. منذ webpack v4.36.0، يدعم هذا الخيار معاملات المسار:[chunk]و[filename]و[contenthash]. ضبطappendعلىfalseيعطل الإضافة.ابتداءً من الإصدار 5.84.0، يسمح webpack بأن تكون قيمة
appendدالة تستقبل path data وكائن asset info، ثم ترجع string.(pathData: PathData, assetInfo?: AssetInfo) => string; -
moduleFilenameTemplate(string): راجعoutput.devtoolModuleFilenameTemplate. -
fallbackModuleFilenameTemplate(string): راجع الرابط السابق. -
ignoreList(stringRegExpfunction (source) => boolean[string, RegExp, function (source) => boolean]): يحدد هل يجب تجاهل ملفات source المطابقة داخل source maps. -
module = true(boolean): يحدد هل يجب على loaders إنشاء source maps. -
columns = true(boolean): يحدد هل تُستخدم mappings على مستوى الأعمدة. -
namespace(string): بادئة namespace تسمح بوجود أكثر من webpack root داخل devtools. راجعoutput.devtoolNamespace. -
noSources = false(boolean): يمنع تضمين محتوى ملفات source داخل source map. -
publicPath(string): ينشئ URLs مطلقة مع بادئة public path، مثلhttps://example.com/project/. -
fileContext(string): يجعل معامل[file]نسبيًا إلى هذا المجلد. -
sourceRoot(string): يحدد قيمة مخصصة لخاصيةsourceRootداخل SourceMap. -
debugIds(boolean): إذا كانتtrue، فسيضيف webpack ids فريدة داخل ملفات source وsourcemaps، مما يسهل ربط sourcemaps بالبناء الصحيح. راجع اقتراح TC39 الخاص بـ sourcemap debug ID لمزيد من التفاصيل.
يفيد خيار fileContext عندما تريد تخزين source maps في مجلد أعلى بدون ظهور ../../ داخل [url] المطلق.
أمثلة
تعرض الأمثلة التالية حالات استخدام شائعة لهذا plugin.
استخدام أساسي
يمكنك استخدام الكود التالي لاستبدال خيار الإعداد devtool: inline-source-map بإعداد مخصص مكافئ باستخدام plugin:
export default {
// ...
devtool: false,
plugins: [new webpack.SourceMapDevToolPlugin({})],
};استبعاد خرائط vendor
يستبعد الكود التالي source maps لأي modules داخل bundle باسم vendor.js:
new webpack.SourceMapDevToolPlugin({
filename: "[file].map[query]",
exclude: ["vendor.js"],
});استضافة source maps خارجيًا
اضبط URL للـ source maps عندما تريد استضافتها على خادم خارجي، مثل خادم يتطلب صلاحيات وصول.
new webpack.SourceMapDevToolPlugin({
append: "\n//# sourceMappingURL=https://example.com/sourcemap/[url]",
filename: "[file].map[query]",
});وفي الحالات التي تُخزن فيها source maps في مجلد أعلى:
project
|- dist
|- public
|- bundle-[hash].js
|- sourcemaps
|- bundle-[hash].js.mapمع الإعداد التالي:
new webpack.SourceMapDevToolPlugin({
filename: "sourcemaps/[file].map",
publicPath: "https://example.com/project/",
fileContext: "public",
});سينتج URL بالشكل التالي:
https://example.com/project/sourcemaps/bundle-[hash].js.map


