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插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 jQuery
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
js、jquery实现列表模糊搜索功能过程解析
Mar 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实现清除MySQL死连接的方法
2016/07/23 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
node中的session的具体使用
2018/09/14 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
详解Python安装scrapy的正确姿势
2018/06/26 Python
python并发和异步编程实例
2018/11/15 Python
pandas中的series数据类型详解
2019/07/06 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
HTML5进度条特效
2014/12/18 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
大学秋游活动方案
2014/02/11 职场文书
个性发展自我评价2015
2015/03/09 职场文书
中学推普周活动总结
2015/05/07 职场文书
关于环保的宣传稿
2015/07/23 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python