使用Webpack打包jQuery插件:环境配置与构建详解

作者:知秋

时间:2026-10-23

浏览:243

本文介绍如何基于ztree和Bootstrap开发带复选框的下拉树控件,并使用Webpack进行打包。重点解析package.json依赖管理、webpack.config.js中output.library与libraryTarget的配置,以及通过Watch Mode和Chrome直接调试的开发流程,旨在提供完整的jQuery控件构建环境配置方案。

文章目录

项目背景与Webpack选型

针对客户需求,需要开发一个具备树形结构且支持复选框的下拉选择控件。经调研,现有的select2和autocomplete组件均无法满足特定要求,因此决定结合ztree与Bootstrap dropdown自行开发该下拉树选择控件。为完成完整的jQuery控件开发并系统掌握Webpack,最终选定使用Webpack进行打包构建。

项目目录结构如下:

项目背景与Webpack选型

package.json配置详情如下:

项目依赖与目录配置


{
 "name": "select-tree",
 "version": "0.0.1",
 "description": "下拉树形选择,带复选框",
 "license": "MIT",
 "author": "kaikai",
 "repository": "https://gitee.com/hkgit/select-tree",
 "scripts": {
  "start": "webpack --watch",
  "build": "webpack --config webpack.config.js"
 },
 "dependencies": {
  "jquery": "~1.12.4",
  "bootstrap": "^3.3.7",
  "jquery-slimscroll": "latest",
  "ztree": "latest"
 },
 "devDependencies": {
  "css-loader": "^0.28.7",
  "html-webpack-plugin": "^2.30.1",
  "style-loader": "^0.19.1",
  "uglifyjs-webpack-plugin": "^1.1.4",
  "webpack": "^3.10.0"
 },
 "bugs": {
  "url": "https://gitee.com/hkgit/select-tree/issues"
 },
 "keywords": [
  "javascript",
  "select",
  "tree",
  "checkbox"
 ]
}

配置说明:jQuery选用1.12版本以兼容IE9浏览器;开发环境启用Webpack的Watch Mode模式;鉴于项目规模较小,调试时直接通过Chrome浏览器打开dist目录下的select-tree.html文件即可。

webpack.config.js核心代码配置如下:

Webpack构建脚本详解


const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  entry: {
    vendor: ['jquery'], // 把需要引入的插件单独分出一个入口,和插件主体分开
    main: './src/select-tree.js'
  },
  output: {
    filename: 'select-tree-min.js',
    path: path.resolve(__dirname, './dist'),
    library: 'selectTree', // 插件名称
    libraryTarget: 'umd' // 插件支持CommonJS2,CommonJS,amd,var
  },
  // resolve: { // npm下载的jquery不需要制定路径
  //   modules: [path.join(__dirname, "node_modules")],
  //   alias: {
  //     jquery: 'jquery/dist/jquery.js'
  //   }
  // },
  module: {
    rules: [{
      test: /\.css$/,
      use: ['style-loader', 'css-loader']
    }]
  },
  plugins: [
    new HtmlWebpackPlugin({ // 自动生成html
      template: './src/select-tree.html',
      filename: 'select-tree.html'
    }),
    new UglifyJSPlugin({ // 压缩代码
      sourceMap: true
    }),
    new webpack.optimize.CommonsChunkPlugin({ // 单独打包jq插件,此插件的依赖库单独抽出来,不影响插件的开发
      name: "vendor",
      filename: "vendor.min.js"
    }),
    new webpack.ProvidePlugin({ // 自动加载jq
      $: 'jquery',
      jQuery: 'jquery'
    })
  ],
  devtool: 'source-map' // 方便调试
};

配置说明:构建的关键点在于output.library和output.libraryTarget参数的设置,这决定了打包后库的全局访问方式。

以上即为本文整理的全部内容,若读者有任何疑问或建议,欢迎在下方留言区讨论,感谢对本站的支持。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章