webpack打包js文件及部署的实现方法


Posted in Javascript onDecember 18, 2017

下面看下webpack打包js文件的实现代码

const path = require('path')
const webpack = require('webpack')
const htmlWebpackPlugin = require('html-webpack-plugin')
// 每次打包之前,自动删除文件夹
const cleanWebpackPlugin = require('clean-webpack-plugin')
// 分离 css 到独立的文件中
const ExtractTextPlugin = require("extract-text-webpack-plugin");
// 压缩 css 资源文件
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')
module.exports = {
// 入口
entry: {
// 项目代码入口
app: path.join(__dirname, './src/js/main.js'),
// 第三方包入口
vendor: ['vue', 'vue-router', 'vue-resource', 'vuex', 'moment', 'mint-ui', 'vue-preview']
},
// 出口
output: {
path: path.join(__dirname, './dist'),
// 设置公共路径
publicPath: '/',
// 此处的name由 entry 中的属性名决定
// chunk 表示一个代码块(webpack模块化分析代码后的结构)
filename: 'js/[name].[chunkhash].js',
// ------添加 chunkFilename, 指定输出js文件的名称------
chunkFilename: 'js/[name].[chunkhash].js',
},
// 配置loader,处理不同的静态资源
module: {
rules: [
{ test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ },
{
test: /\.css$/,
// 抽离和压缩css
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
{
test: /\.(sass|scss)$/,
// 抽离和压缩 scss
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: ['css-loader', 'sass-loader']
})
},
{
test: /\.(png|jpg|jpeg|gif|bmp|webp)$/, use: {
loader: 'url-loader',
options: {
limit: 6518,
// name: 'images/imgs-[hash:7].[ext]'
// [name] 使用图片的名称作为最终生成的文件名称
// [ext] 使用图片的默认后缀
// name: '[name].[ext]'
// images/ 表示图片生成后存放的路径
name: 'images/[hash:10].[ext]'
}
}
},
{
// 参考上面图片的配置,进行配置即可
test: /\.(ttf|woff|woff2|svg|eot)$/,
use: {
loader: 'url-loader',
options: {
limit: 2048,
name: 'fonts/[hash:10].[ext]'
}
}
},
{ test: /\.vue$/, use: 'vue-loader' },
]
},
// source-map 定位错误的
// devtool: 'cheap-module-source-map',
// 配置 htmlWebpackPlugin
plugins: [
new htmlWebpackPlugin({
template: path.join(__dirname, './src/index.html'),
filename: 'index.html',
// 压缩HTML
minify: {
// 移除空白
collapseWhitespace: true,
// 移除注释
removeComments: true,
// 移除属性中的双引号
removeAttributeQuotes: true
}
}),
// 自动删除dist目录
// 参数:表示要删除文件的路径,可以是多个
new cleanWebpackPlugin(['./dist']),
// 分离第三方包(公共包文件)
new webpack.optimize.CommonsChunkPlugin({
// 第三方包入口名称,对应 entry 中的 vendor 属性
// 将 entry 中指定的 ['vue', 'vue-router', 'vue-resource'] 打包到名为 vendor 的js文件中
name: 'vendor',
}),
// 压缩js代码
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
// 压缩
compress: {
// 移除警告
warnings: false
}
}),
// 指定环境,设置为生产环境
// 开发期间我们使用vue的为压缩版本,项目上下了,只需要将环境修改为
// 生产环境,那么,vue就会自动变为 压缩版本
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
// 通过插件抽离 css (参数)
// 参数:表示将抽离的css文件生成到哪个目录中
new ExtractTextPlugin("css/style.css"),
// 压缩抽离之后的css
new OptimizeCssAssetsPlugin(),
// 启用 scope hoisting
new webpack.optimize.ModuleConcatenationPlugin()
]
}

下面给大家介绍下webpack打包后的JS文件如何部署?

webpack打包后的JS文件,怎样发布到生产环境使用?能发布到TOMCAT吗?还是需要其它的部署环境?

打包出来的文件你把它当成普通的js文件就好了,最不济,你复制到想放的目录在页面中引用,jquery.min,js怎么用,webpack打包出来的js文件你也怎么用。

总结

以上所述是小编给大家介绍的webpack打包js文件及部署的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Expandable "Detail" Table Rows
Aug 29 Javascript
表单元素事件 (Form Element Events)
Jul 17 Javascript
js微信支付实现代码
Dec 22 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
面试常见的js算法题
Mar 23 Javascript
Node.js连接mongodb实例代码
Jun 06 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 jQuery
Javascript之高级数组API的使用实例
Mar 08 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
如何在selenium中使用js实现定位
Aug 18 Javascript
原型和原型链 prototype和proto的区别详情
Nov 02 Javascript
react+redux的升级版todoList的实现
Dec 18 #Javascript
总结js中的一些兼容性易错的问题
Dec 18 #Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 #Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 #jQuery
详解如何使用 vue-cli 开发多页应用
Dec 16 #Javascript
详解VUE 数组更新
Dec 16 #Javascript
详解如何用模块化的方式写vuejs
Dec 16 #Javascript
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
自荐信不宜过于夸大
2013/11/06 职场文书
质检员的岗位职责
2013/11/15 职场文书
电子专业推荐信范文
2013/11/18 职场文书
高中体育教学反思
2014/01/29 职场文书
应聘教师自荐信
2015/03/26 职场文书
2015年公务员工作总结
2015/04/24 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫