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实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
jQuery模拟html下拉多选框的原生实现方法示例
May 30 jQuery
基于JQuery实现页面定时弹出广告
May 08 jQuery
jquery自定义组件实例详解
Dec 31 jQuery
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
jQuery treeview树形结构应用
Mar 24 jQuery
jQuery ajax - getScript() 方法和getJSON方法
May 14 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
把77A收信机改造成收音机
2021/03/02 无线电
php数组合并与拆分实例分析
2015/06/12 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
php写app用的框架整理
2019/09/29 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
vue-router单页面路由
2017/06/17 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
python统计一个文本中重复行数的方法
2014/11/19 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Python 监测文件是否更新的方法
2019/06/10 Python
python常用函数与用法示例
2019/07/02 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python 实现多维数组(array)排序
2020/02/28 Python
python能否java成为主流语言吗
2020/06/22 Python
北京天润融通.net面试题笔试题
2012/02/20 面试题
木马的传播途径主要有哪些
2016/04/08 面试题
霸气队列口号
2014/06/18 职场文书
委托培训协议书
2014/11/17 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
高质量“欢迎词”
2019/04/03 职场文书
Linux中文件的基本属性介绍
2022/06/01 Servers