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使用unlock.js插件实现滑动解锁
Apr 04 jQuery
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
简单实现jQuery弹幕效果
May 06 jQuery
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
jquery+css实现下拉列表功能
Sep 03 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
jQuery实现回到顶部效果
Oct 19 jQuery
jquery实现拖拽小方块效果
Dec 10 jQuery
jquery实现淡入淡出轮播图效果
Dec 13 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
elgg 获取文件图标地址的方法
2010/03/20 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
JS面向对象编程之对象使用分析
2010/08/19 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
用Python实现命令行闹钟脚本实例
2016/09/05 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Python输出各行命令详解
2018/02/01 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
儿媳婚宴答谢词
2014/01/14 职场文书
技校个人求职信范文
2014/01/25 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
mysql 生成连续日期及变量赋值
2022/03/20 MySQL