Webpack 通過 Plugin 機制讓其更加靈活,以適應各種應用場景。 在 Webpack 運行的生命周期中會廣播出許多事件,Plugin 可以監聽這些事件,在合適的時機通過 Webpack 提供的 API 改變輸出結果。
Plugin示例代碼:通過 compiler.plugin(事件名稱, 回調函數)
監聽到 Webpack 廣播出來的事件。 並且可以通過 compiler 對象去操作 Webpack
class BasicPlugin{ // 在構造函數中獲取用戶給該插件傳入的配置 constructor(options){ } // Webpack 會調用 BasicPlugin 實例的 apply 方法給插件實例傳入 compiler 對象 apply(compiler){ compiler.plugin('compilation',function(compilation) { }) } } // 導出 Plugin module.exports = BasicPlugin;
在webpack上使用編寫的plugin代碼
const BasicPlugin = require('./BasicPlugin.js'); module.export = { plugins:[ new BasicPlugin(options), ] }
plugin也可以給其他plugin廣播事件
/** * 廣播出事件 * event-name 為事件名稱,注意不要和現有的事件重名 * params 為附帶的參數 */ compiler.apply('event-name',params); /** * 監聽名稱為 event-name 的事件,當 event-name 事件發生時,函數就會被執行。 * 同時函數中的 params 參數為廣播事件時附帶的參數。 */ compiler.plugin('event-name',function(params) { });