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中关于bind()方法的使用技巧分享
Mar 30 jQuery
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 jQuery
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
基于jquery.page.js实现分页效果
Jan 01 jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
JQuery animate动画应用示例
May 14 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 jQuery
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 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 图片上传代码
2011/09/13 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
使用python Django做网页
2013/11/04 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
社区包粽子活动方案
2014/01/21 职场文书
推荐信格式要求
2014/05/09 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
办公用品质量保证书
2015/05/11 职场文书
致运动员加油稿
2015/07/21 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
2019年大学推荐信
2019/06/24 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫