webpack写jquery插件的环境配置


Posted in jQuery onDecember 21, 2017

客户需求要一个具备树结构、带复选框的下拉选择控件;在网上找到了select2、autocomplete都不满足要求。于是自己用ztree加bootstrap dropdown组合开发了一个下拉树选择控件。决定用webpack打包,开发一个完整的jquery控件,顺便系统的学习一下webpack。

目录结构:

webpack写jquery插件的环境配置

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's Watch Mode,由于项目比较小,调试就直接用chrome打开dist/select-tree.html文件。

webpack.config.js代码:

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

以上就是我们给大家整理的本篇文章的全部内容,如果大家还有任何明白的地方可以在下方的留言区域讨论,感谢对三水点靠木的支持。

jQuery 相关文章推荐
JQuery实现图片轮播效果
May 08 jQuery
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
jquery实现搜索框功能实例详解
Jul 23 jQuery
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
用jQuery实现抽奖程序
Apr 12 jQuery
jQuery实现计算器功能
Oct 19 jQuery
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
jQuery实现简单轮播图效果
Dec 27 jQuery
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 #jQuery
jQuery实现动态控制页面元素的方法分析
Dec 20 #jQuery
jquery自定义显示消息数量
Dec 19 #jQuery
jquery实现侧边栏左右伸缩效果的示例
Dec 19 #jQuery
jquery中done和then的区别(详解)
Dec 19 #jQuery
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 #jQuery
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 #jQuery
You might like
用PHP实现小型站点广告管理
2006/10/09 PHP
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python中bisect模块用法实例
2014/09/25 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python 中的lambda函数介绍
2018/10/10 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
django 模型字段设置默认值代码
2020/07/15 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
.NET笔试题(20个问题)
2016/02/02 面试题
法雷奥SQA(electric)面试问题
2016/01/23 面试题
行政部主管岗位职责
2013/12/28 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
高校教师个人总结
2015/02/10 职场文书
会议通知格式范文
2015/04/15 职场文书
退休欢送会致辞
2015/07/31 职场文书