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 相关文章推荐
js鼠标左右键 键盘值小结
Jun 11 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 Javascript
angularJS中router的使用指南
Feb 09 Javascript
jquery Validation表单验证使用详解
Sep 12 Javascript
js原型链与继承解析(初体验)
May 09 Javascript
ES6学习教程之块级作用域详解
Oct 09 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
taro开发微信小程序的实践
May 21 Javascript
Jquery实现获取子元素的方法分析
Aug 24 jQuery
如何用JavaScript实现一个数组惰性求值库
May 05 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
js实现日历与定时器
2017/02/22 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
vue中appear的用法
2017/08/17 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
python二叉树遍历的实现方法
2013/11/21 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
python实现朴素贝叶斯算法
2018/11/19 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
django foreignkey(外键)的实现
2019/07/29 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Python模块 _winreg操作注册表
2020/02/05 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
教师党性分析材料
2014/02/04 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
化工专业求职信
2014/07/01 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
会议室使用管理制度
2015/08/06 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python
java如何实现socket连接方法封装
2021/09/25 Java/Android
Python Matplotlib库实现画局部图
2021/11/17 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技