博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack系列之plugin及简单的使用
阅读量:5797 次
发布时间:2019-06-18

本文共 2462 字,大约阅读时间需要 8 分钟。

webpack系列之plugin及简单的使用

一.plugin有什么用

plugin
webpack核心功能,通过
plugin(插件)webpack可以实现
loader所不能完成的复杂功能,使用
plugin丰富的自定义
API,可以控制
webpack编译流程的每个环节,
实现对webpack的自定义功能扩展。

举例

我们实际项目中就使用了HtmlWebpackPlugin插件,它帮助我们做了下面几件事儿:

  1. 在工程打包成功后会自动生成一个html模板文件
  2. 同时所依赖的CSS/JS也都会被自动引入到这个html模板文件中
  3. 设置生成hash添加在引入文件地址的末尾,类似于我们常用的时间戳,来解决可能会遇到的缓存问题。

项目打包后生成的模板文件如下:

  
移山

二.什么是plugin

plugin是一个具有
apply方法的
js对象。
apply方法会被
webpack
compiler(编译器)对象调用,并且
compiler 对象可在整个
compilation(编译)生命周期内访问。

一个plugin看起来大概是这个样子:

function CustomPlugin(options){  // options是配置文件,你可以在这里进行一些与options相关的工作}// 每个plugin都必须定义一个apply方法,webpack会自动调用这个方法CustomPlugin.prototype.apply = function(compiler){    ......    });}module.exports = CustomPlugin;

有兴趣对自定义插件感兴趣,想了解的更多的,可以看。

三.使用plugin

webpack 配置文件(webpack.config.js)中,向 plugins 属性传入 new 实例即可。比如:

const HtmlWebpackPlugin = require('html-webpack-plugin');const webpack = require('webpack');module.exports = {    module: {    loaders: [      {        test: /\.(js|jsx)$/,        loader: 'babel-loader'      }    ]  },  plugins: [    new webpack.optimize.UglifyJsPlugin(), //访问内置的插件    new HtmlWebpackPlugin({template: './src/index.html'}) //访问第三方插件  ]};

注意

  • webpack中的插件分为内置插件和第三方插件
  • 内置插件不需要额外安装依赖,如上面的例子中:
  • 如果是第三方插件,如上面的例子中,则使用之前需要进行安装:
npm install html-webpack-plugin --save-dev

四.案例

在对plugin有了一个基本认识后,来做一个小案例:

“我想对所有的文件打包后添加一个版权声明”

目录结构

webpackPluginDemo的目录结构如下:

├── app
├── package-lock.json
├── package.json
├── src
│ └── index.js
└── webpack.config.js

1. 安装webpack

webpackPluginDemo根目录下安装webpack:

npm install --save-dev webpack
2.入口文件index.js
document.write('webpack系列之plugin的基本使用!');
3.webpack配置文件webpack.config.js
const webpack = require('webpack') module.exports = {    entry:  __dirname + "/src/index.js",  //入口文件    output: {        path: __dirname + "/app",  //打包后的文件存放的地方        filename: "bundle.js" //打包后输出文件的文件名    },    plugins: [        new webpack.BannerPlugin('版权所有,翻版必究')    ],}

注意BannerPlugin为内置插件,如果是其它的外置插件,则需在使用前要先安装。

4.执行打包命令
➜  webpackPluginDemo webpackHash: 16453f43abe665633286Version: webpack 2.4.1Time: 70ms    Asset     Size  Chunks             Chunk Namesbundle.js  2.86 kB       0  [emitted]  main   [0] ./src/index.js 210 bytes {0} [built]
5.查看结果

打包成功,可以看到app目录下面已经生成了bundle.js,打开bundle.js会发现版权信息已经加上了:

图片描述

五.常用插件

常用插件

  1. :对所有的文件打包后添加一个版权声明
  2. : 对JS进行压缩混淆
  3. :可以根据模板自动生成html代码,并自动引用css和js文件
  4. :在每次修改代码保存后,浏览器会自动刷新,实时预览修改后的效果
  5. :通过Webpack来拷贝文件
  6. :将js文件和css文件分别单独打包,不混在一个文件中
  7. 编译时配置全局变量,这对开发模式和发布模式的构建允许不同的变量时非常有用
  8. 不同组件中重复的css可以快速去重
  9. 更多可点击这里。

转载地址:http://npsfx.baihongyu.com/

你可能感兴趣的文章
Unity接入谷歌支付
查看>>
laravel 使用 vue (gulp)
查看>>
QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类...
查看>>
HTTP之二 http 301 和 302的区别
查看>>
从源码看集合ArrayList
查看>>
Gephi
查看>>
git 入门宝典
查看>>
Android NDK开发之旅3 C语言 指针
查看>>
网络框架 Retrofit(二)
查看>>
Masonry 快速修炼手册,带你打怪升级
查看>>
LeetCode之Score After Flipping Matrix(Kotlin)
查看>>
06-引用
查看>>
使用Numpy和Opencv完成图像的基本数据分析(Part II)
查看>>
Web 前端单元测试到底要怎么写?看这一篇就够了
查看>>
阿里云Serverless Kubernetes通过Ingress提供7层服务访问
查看>>
BLASTN参数研究记之max_target_seqs和num_alignments
查看>>
CentOS 7 配置部署SVN服务
查看>>
PHP 批量更新
查看>>
基于上下文无关文法的句子生成算法
查看>>
不一样的ZTree,权限树.js插件
查看>>