Plugins
الإضافات هي العمود الفقري لـ webpack. فـ webpack نفسه مبني على نظام الإضافات نفسه الذي تستخدمه في تكوين webpack لديك.
كما تؤدي الإضافات غرض تنفيذ أي شيء آخر لا يستطيع المحمّل فعله. يوفر webpack كثيرًا من هذه الإضافات مباشرة.
التشريح
إضافة webpack هي كائن JavaScript يحتوي على طريقة apply. يستدعي مترجم webpack طريقة apply هذه، مما يمنحها وصولًا إلى دورة حياة الترجمة بالكامل.
ConsoleLogOnBuildWebpackPlugin.js
const pluginName = "ConsoleLogOnBuildWebpackPlugin";
class ConsoleLogOnBuildWebpackPlugin {
apply(compiler) {
compiler.hooks.run.tap(pluginName, (compilation) => {
console.log("The webpack build process is starting!");
});
}
}
export default ConsoleLogOnBuildWebpackPlugin;يوصى بأن يكون المعامل الأول لطريقة tap الخاصة بخطاف المترجم نسخة camelCase من اسم الإضافة. ومن الأفضل استخدام ثابت لهذا الاسم حتى يعاد استخدامه في كل hooks.
الاستخدام
بما أن الإضافات يمكنها استقبال معاملات أو خيارات، يجب تمرير نسخة new إلى خاصية plugins في تكوين webpack.
اعتمادًا على طريقة استخدامك لـ webpack، توجد عدة طرق لاستخدام الإضافات.
التكوين
webpack.config.js
import path from "node:path";
import { fileURLToPath } from "node:url";
import HtmlWebpackPlugin from "html-webpack-plugin";
import webpack from "webpack"; // to access built-in plugins
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export default {
entry: "./path/to/my/entry/file.js",
output: {
filename: "my-first-webpack.bundle.js",
path: path.resolve(__dirname, "dist"),
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
use: "babel-loader",
},
],
},
plugins: [
new webpack.ProgressPlugin(),
new HtmlWebpackPlugin({ template: "./src/index.html" }),
],
};تُستخدم ProgressPlugin لتخصيص طريقة الإبلاغ عن التقدم أثناء الترجمة، بينما تنشئ HtmlWebpackPlugin ملف HTML يتضمن ملف my-first-webpack.bundle.js باستخدام وسم script.
Node API
عند استخدام Node API، يمكنك أيضًا تمرير الإضافات عبر خاصية plugins في التكوين.
some-node-script.js
import webpack from "webpack"; // to access webpack runtime
import configuration from "./webpack.config.js";
const compiler = webpack(configuration);
new webpack.ProgressPlugin().apply(compiler);
compiler.run((err, stats) => {
// ...
});


