webpack-插件

插件(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 源码中隐藏有大量使用示例,你可以用在自己的配置和脚本中。

原文地址:https://www.cnblogs.com/cisum/p/8475438.html

时间: 2024-10-29 03:19:24

webpack-插件的相关文章

webpack 插件拾趣 (1) —— webpack-dev-server

结束了一季的忙碌,我这封笔已久的博客也终究该从春困的咒印中复苏,想来写些实用易读的作为开篇,自然是最好不过. 新开个 webpack 插件/工具介绍的文章系列,约莫每周更新一篇篇幅适中的文章聊以共勉,兴许合适. 原本期望每篇文章里可以介绍若干个插件,但鉴于部分插件略为复杂,且单篇内容不想写的唇焦舌敝惹人倦烦,所以像本文要介绍的 webpack-dev-server 就独立一文了. 回归主题,今天你或许会花上30分钟的时间读完本章,并掌握 webpack-dev-server 的使用方法.理清一些

编写webpack 插件

Webpack插件为第三方开发者释放了Webpack的最大可能性.利用多级回调开发者可以把他们自己的需要的功能引入到Webpack里面来.Build插件比Build loader 更进一步.因为你需要理解Webpack底层的东西.要有月底源代码的准备. Compiler 和 Compilation 开发插件最重要的两个资源就是 compiler 和 compilation 对象,理解他们的是扩展Webpack重要的一步 compiler对象包涵了Webpack环境所有的的配置信息,这个对象在We

webpack插件机制

webpack插件机制是整个webpack工具的核心,那么webpack插件有什么特点呢? 1.独立的JS模块,暴露相应的函数 2.函数原型上的apply方法会注入compiler对象(之所以要定义apply方法,是因为源码中是通过plugin.apply()调用插件的) 3.compiler对象上挂载了相应的webpack事件钩子 4.事件钩子的回调函数里能拿到编译后的compilation对象,如果是异步钩子还能拿到相应的callback 下面看个例子: function MyPlugin(

webpack插件之htmlWebpackPlugin

webpack插件之htmlWebpackPlugin webpack插件 自动化 htmlWebpackPlugin 由于webpack已经帮我们处理好js之间的依赖关系,现在我们可以忽略js的加载顺序,而只要在index.html内使用<script>标签引入bundle.js即可. 在index.html内使用引入bundle.js 开发阶段,index.html在根目录,script引入好像也没什么问题. index.html在根目录 但在真实发布项目时,发布的内容js文件都在dist

webpack插件之webpack-dev-server

webpack插件之webpack-dev-server webpack插件 自动化 webpack-dev-server 现在只需要使用 npm run build指令就可以自动打包,并自动处理好各种依赖关系,但还是存在一个问题, 如果对js文件的代码进行了修改,又要重新打包才能测试,很明显又要手动操作 在开发测试过程中,我们会经常修改代码后,然后频繁刷新页面查看效果.对于我们前端仔来说,每次修改代码后都需要重新编译才能测试.这个过程非常繁琐,这简直是个深坑,不能忍啊.使用webpack-de

webpack 插件: html-webpack-plugin

插件地址:https://www.npmjs.com/package/html-webpack-plugin 这个插件用来简化创建服务于 webpack bundle 的 HTML 文件,尤其是对于在文件名中包含了 hash 值,而这个值在每次编译的时候都发生变化的情况.你既可以让这个插件来帮助你自动生成 HTML 文件,也可以使用 lodash 模板加载生成的 bundles,或者自己加载这些 bundles. Installation 使用 npm 安装这个插件 $ npm install

webpack 插件: html-webpack-plugin的使用

插件地址:https://www.npmjs.com/package/html-webpack-plugin 这个插件用来简化创建服务于 webpack bundle 的 HTML 文件,尤其是对于在文件名中包含了 hash 值,而这个值在每次编译的时候都发生变化的情况.你既可以让这个插件来帮助你自动生成 HTML 文件,也可以使用 lodash 模板加载生成的 bundles,或者自己加载这些 bundles. Installation 使用 npm 安装这个插件 $ npm install

webpack插件

插件 plugins:[ new ExtractTextPlugin.extrct({ }) //创建html new HtmlWebpackPlugin({ title:"first page", filename:"index.html", template:"/index.html, // true 显示在body false不显示(默认) inject:true "body" }), // 热替换 new webpack.Hot

Webpack 4 学习10 (运用webpack插件拷贝静态文件(copy-webpack-plugin))

安装插件 npm install --save-dev copy-webpack-plugin 配置webpack.config.js 头部引入插件 const CopyWebpackPlugin = require('copy-webpack-plugin'); 在plugins模块引入 new CopyWebpackPlugin([ { from:__dirname+'/public/lib', to:__dirname+'/build/lib' } ]) 运行打包命令 webpack --

webpack插件之html-webpack-plugin

官方文档:https://www.npmjs.com/package/html-webpack-plugin html-webpack-plugin 插件专门为由webpack打包后的js提供一个载体,即一个HTML模板,里面通过script标签引用打包后的JS. 下面来看一下基本配置: 1 const Path = reqiure('path) 2 // 引入插件 3 const HtmlWebpackPlugin = require('html-webpack-plugin') 4 5 mo