使用Webpack打包jQuery插件:环境配置与构建详解
本文介绍如何基于ztree和Bootstrap开发带复选框的下拉树控件,并使用Webpack进行打包。重点解析package.json依赖管理、webpack.config.js中output.library与libraryTarget的配置,以及通过Watch Mode和Chrome直接调试的开发流程,旨在提供完整的jQuery控件构建环境配置方案。
项目背景与Webpack选型
针对客户需求,需要开发一个具备树形结构且支持复选框的下拉选择控件。经调研,现有的select2和autocomplete组件均无法满足特定要求,因此决定结合ztree与Bootstrap dropdown自行开发该下拉树选择控件。为完成完整的jQuery控件开发并系统掌握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参数的设置,这决定了打包后库的全局访问方式。
以上即为本文整理的全部内容,若读者有任何疑问或建议,欢迎在下方留言区讨论,感谢对本站的支持。
生产环境怎么自动移除或禁用 Mock.js
2026-11-05 09:26:52
JS文件报MIME type mismatch错误导致加载失败的修复方法
2026-11-04 11:41:15
Auto.js下载速度慢或链接失效怎么办?国内镜像与备用方案
2026-11-03 15:46:28
Vite项目JS压缩配置指南:提升构建速度与体积优化
2026-11-03 08:53:48
JS压缩工具选型:Terser、esbuild与UglifyJS对比
2026-11-03 08:28:21
