1. 程式人生 > >webpack-插件

webpack-插件

自己的 run bundle content 自身 ports 開發者 tput 構建

插件(Plugins)

插件是 wepback 的支柱功能。webpack 自身也是構建於,你在 webpack 配置中用到的相同的插件系統之上!

插件目的在於解決 loader 無法實現的其他事。

剖析

webpack 插件是一個具有 apply 屬性的 JavaScript 對象。apply 屬性會被 webpack compiler 調用,並且 compiler 對象可在整個編譯生命周期訪問。

ConsoleLogOnBuildWebpackPlugin.js

function ConsoleLogOnBuildWebpackPlugin() {

};

ConsoleLogOnBuildWebpackPlugin.prototype.apply 
= function(compiler) { compiler.plugin(‘run‘, function(compiler, callback) { console.log("webpack 構建過程開始!!!"); callback(); }); };

作為一個聰明的 JavaScript 開發者,你可能還記得 Function.prototype.apply 方法。通過這個方法你可以把任意函數作為插件傳遞(this 將指向 compiler)。你可以在配置中使用這樣的方式來內聯自定義插件。

用法

由於插件可以攜帶參數/選項,你必須在 webpack 配置中,向 plugins

屬性傳入 new 實例。

根據你的 webpack 用法,這裏有多種方式使用插件。

配置

webpack.config.js

const HtmlWebpackPlugin = require(‘html-webpack-plugin‘); //通過 npm 安裝
const webpack = require(‘webpack‘); //訪問內置的插件
const path = require(‘path);

const config = {
  entry: ./path/to/my/entry/file.js,
  output: {
    filename: my-first-webpack.bundle.js
, path: path.resolve(__dirname, dist) }, module: { loaders: [ { test: /\.(js|jsx)$/, use: babel-loader } ] }, plugins: [ new webpack.optimize.UglifyJsPlugin(), new HtmlWebpackPlugin({template: ‘./src/index.html}) ] }; module.exports = config;

Node API

即便使用 Node API,用戶也應該在配置中傳入 plugins 屬性。compiler.apply 並不是推薦的使用方式。

some-node-script.js

  const webpack = require(‘webpack‘); //訪問 webpack 運行時(runtime)
  const configuration = require(‘./webpack.config.js);

  let compiler = webpack(configuration);
  compiler.apply(new webpack.ProgressPlugin());

  compiler.run(function(err, stats) {
    // ...
  });

你知道嗎:以上看到的示例和 webpack 自身運行時(runtime) 極其類似。wepback 源碼中隱藏有大量使用示例,你可以用在自己的配置和腳本中。

webpack-插件