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 相关文章推荐
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
js charAt的使用示例
Feb 18 Javascript
js css 实现遮罩层覆盖其他页面元素附图
Sep 22 Javascript
小白谈谈对JS原型链的理解
May 03 Javascript
jQuery代码实现表格中点击相应行变色功能
May 09 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 Javascript
jQuery实现checkbox的简单操作
Nov 18 jQuery
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
vue-video-player视频播放器使用配置详解
Oct 23 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版(5)
2006/10/09 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
PHP代码优化技巧小结
2015/09/29 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python使用MD5加密字符串示例
2014/08/22 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
python是否适合网页编程详解
2019/10/04 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
软件项目实施计划书
2014/05/02 职场文书
单位委托书
2014/10/15 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js