webpack上线版(生产环境中推荐使用)

配置上线版(生产环境)webpack:

实际中将开发环境中和生产环境中打包配置是分开的,两者本质没太大区别,只是生产环境中的webpack打包配置要更加优化合理,下面将具体介绍一下生产环境中webpack配置文件,其步骤:

1.在项目文件夹中新建一个名为: webpack.publish.config.js 的文件。

2.在package.json文件script中新增配置 : “pub”:“webpack --config webpack.publish.config.js”

3.将 webpack.config.js 文件中的代码复制粘贴到 webpack.publish.config.js 文件中进行修改。

4.下面是 webpack.publish.config.js 文件中修改过后的代码示例:

const path = require('path');//引入路径模块const htmlWebpackPlugin = require('html-webpack-plugin');//用于打包时生成html文件的插件const cleanWebpackPlugin = require('clean-webpack-plugin');//用于每次打包时删除dist中旧的文件的插件const webpack = require('webpack');//引入webpack自己,用于配置webpack本身const ExtractTextPlugin = require("extract-text-webpack-plugin");//引入抽取CSS的插件const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');//引入压缩CSS的插件module.exports = {entry: { // 配置入口文件:app: path.join(__dirname, './src/main.js'),//将项目根目录中src下的main.js作为入口文件vendors: ['jquery'] // 配置第三方包无需打包到一起,把要抽离的第三方包名加到数组即可},output: {//配置出口文件:path: path.join(__dirname, './dist'),//将打包后的文件输出到:项目根目录中dist文件夹中filename: 'js/bundle.js'//将打包后的js文件命名为bundle.js并将其存放到dist下js文件夹中},plugins: [ // 配置插件:new htmlWebpackPlugin({//打包时在dist中生成html文件的插件template: path.join(__dirname, './src/index.html'),//配置打包时需要的html文件供打包生成html文件filename: 'index.html',//html文件名minify: {//压缩配置:collapseWhitespace: true, // 合并多余的空格removeComments: true, // 移除注释removeAttributeQuotes: true // 移除属性上的双引号}}),new cleanWebpackPlugin(['dist']),//每次打包时删除旧的dist文件new webpack.optimize.CommonsChunkPlugin({//抽离第三方包的插件name: 'vendors', // 指定要抽离的入口名称filename: 'js/vendors.js' //将第三方包单独打包到vendors.js文件中}),new webpack.optimize.UglifyJsPlugin({//压缩插件compress: { // 配置压缩选项warnings: false // 移除警告}}),new webpack.optimize.DedupePlugin({ //配置环境插件'process.env.NODE_ENV': '"production"'// 设置为上线环境,进一步压缩JS代码}),new ExtractTextPlugin("css/styles.css"), // 抽取CSS文件new OptimizeCssAssetsPlugin()// 压缩CSS代码的插件],module: {rules: [{//处理css文件:test: /\.css$/, use: ExtractTextPlugin.extract({fallback: "style-loader",use: "css-loader",publicPath: '../' //抽取的时候,自动为路径加上 ../ 前缀})},{//处理scss文件:test: /\.scss$/, use: ExtractTextPlugin.extract({fallback: 'style-loader',use: ['css-loader', 'sass-loader'],publicPath: '../' //抽取的时候,自动为路径加上 ../ 前缀})},{//处理图片:test: /\.(png|gif|bmp|jpg)$/,use: 'url-loader?limit=5000&name=images/[hash:8]-[name].[ext]'//当文件大于5000时,将文件输出到dist下images文件夹中,命名为:取hash值前8位+原文件名+后缀},{//处理js文件:test: /\.js$/, use: 'babel-loader',exclude: /node_modules/ //排除node_modules文件夹中的文件},{//处理vue文件:text: /\.vue$/,use: 'vue-loader'},{//处理txt文件:test: /\.txt$/,use: 'raw-loader'}//注意:更多处理相关文件的配置自行配置,需要根据实际进行处理,避免无效loader]}
}

5.终端输入:npm run pub 打生产环境的包。

开发环境webpack配置:
需要注意:开发环境还是建议使用开发环境的打包配置进行打包,因为这样开一提高开发效率,开发环境打包配置之前已经介绍过,这里再做简单强调一下,其主要步骤:
1.确保在package.json文件script中有配置:“dev”: “webpack-dev-server --open --port 3000 --hot”

2.确保项目文件夹根目录下有: package.config.js 文件,其代码示例:

const path = require('path')const htmlWebpackPlugin = require('html-webpack-plugin')module.exports = {entry: path.join(__dirname, './src/main.js'),output: {path: path.join(__dirname, './dist'),filename: 'bundle.js'},plugins: [new htmlWebpackPlugin({template: path.join(__dirname, './src/index.html'),filename: 'index.html'})],module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader']},{test: /\.scss$/,use: ['style-loader', 'css-loader', 'sass-loader']},{test: /\.(png|gif|bmp|jpg)$/,use: 'url-loader?limit=5000'},{test: /\.js$/,use: 'babel-loader',exclude: /node_modules/},{text: /\.vue$/,use: 'vue-loader'},{test: /\.txt$/,use: 'raw-loader'}]}
}

3.终端键入:webpack 打开发环境的包。

注意: 以上用到的模块或插件,在使用之前确保安装。

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双电阻差分电流采样_小小的采样电阻,还真有点门道!

电流检测电阻的基本原理根据欧姆定律,当被测电流流过电阻时,电阻两端的电压与电流成正比.当1W的电阻通过的电流为几百毫安时,这种设计是没有问题的.然而如果电流达到10-20A,情况就完全不同,因为在电阻上损耗的功率(PI2xR)就不容忽视了.我们可以通过降低电阻阻值来降低功率损耗,…

jpa in查询_优选在shopee虾皮怎么发货价格查询皮皮虾云仓

优选在shopee虾皮怎么发货价格查询皮皮虾云仓皮皮虾云仓物流系统为现代化管理系统,可集中化,高效化的处理本土店物流订单。物流系统可对接主流的的电商平台ERP可以实现高效的订单处理。如lazada,shopee,1688、速卖通、eaby、shopi…

html5+、ReactNative、Weex、Ionic之间的区别、(配置java、python、Android环境)、ReactNative(react-native-cli)、yarn、Weex

html5、ReactNative、Weex、Ionic之间的区别: html5和Ionic: 在开发原理上基本相同,都是需要先开发出一个完整的网站,再通过html5或Ionic提供的打包技术对网站进行打包成移动app,它们实际还是一个网站,并非…

AVAudioSession

AVAudioSession类由AVFoundation框架引入。每个IOS应用都有一个音频会话。这个会话可以被AVAudioSession类的sharedInstance类方法访问,如下: AVAudioSession *audioSession [AVAudioSession sharedInstance];复制代码在获得一个AVAudioSession类的实例…

delphi listview失去焦点后的颜色_阴阳师姑获鸟和惠比寿建模更新对比 爷爷帅了 觉醒后鸟姐颜值提升...

阴阳师体验服近期更新了人气式神姑获鸟还有惠比寿的相关建模,本次特别奉上有关这两位式神的建模形象对比图,对比后发现经过修改和优化之后,爷爷更帅了,而觉醒后的鸟姐颜值也有所提升,一起来看看吧。惠比寿觉醒前觉醒前…

kibana 显示 @timestamp 时间问题(utc or browser当前时间)自动转换显示

https://github.com/elasticsearch/kibana/issues/95 可以统一timestamp时间字段为当前信息时区的时间! http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html 转载于:https://www.cnblogs.com/sunxucool/p/3939701.ht…

React简介、虚拟DOM、Diff算法、创建React项目、JSX语法、组件、组件声明方式、组件传值props和state、组件的生命周期

React简介: 前面只是简单介绍移动APP开发,后面还会继续深入介绍移动app开发;其中想要用ReactNative开发出更出色的应用,那么就得学好React,下面将介绍React: React 是一个由 Facebook 开发用于构建用户界…

去掉 edittext 长按全选_开封消毒湿巾全选

开封消毒湿巾全选   其实,带有杀菌效果的清洁产品大多通过降低微生物的繁殖力达到预期的杀菌效果,所添加的每种杀菌成分都针对特定细菌,无法杀灭所有细菌。如果产品中的杀菌剂浓度总是不能将细菌完全杀灭,就可能导致细菌对该类杀…

this指向、数据双向流、传递参数、JSX中循环、React中样式、路由、引入资源的其它方式、create-react-app脚手架、事件处理、获取数据、UI框架推荐、pc桌面应用electronjs

改变this指向的几种方式: //1.使用箭头函数代替原始函数写法:getState()>{}//2.在函数调用时给函数名加bind(this)方法:(bind中第一个参数表示修改this指向、第二个参数开始是用来传递数据的)onClick{this.getProps.bind(this,this.datas)…

代数余子式之和怎么算_小明说养老 | 养老金怎么算之月平均缴费指数怎么来的?...

上一期小明分享了企业职工养老保险退休待遇怎么算,具体可戳小明说养老|养老金怎么算?小明来教你。在以张阿姨为例的计算举例中,提到张阿姨15年的平均缴费指数为0.8209。对这个平均缴费指数的概念提问较多,今天就来解释一下月平均缴…

高性能IO设计的Reactor和Proactor模式(转)

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是…

ReactNative简介、开发环境、调试、常用组件、useState状态、FlatList组件、SectionList组件、Platform 模块、定义样式、图片组件、触摸事件、打包apk发布版

ReactNative简介: ReactNative是基于React语法来进行开发移动app的框架; ReactNative中提供了移动端专用的一些组件,我们要使用ReactNative固有的组件代替网页中使用的一些元素,如:div, p, img 都不能用了&#xff1…

odis工程师使用方法_傅里叶红外光谱仪常见故障维修及排除方法,你了解有多少种呢?...

傅里叶红外光谱仪在使用过程中难免会出现故障,那我们该怎么检修呢?赛默飞傅里叶红外光谱仪有些光谱仪器的使用说明书会给出光谱仪的常见故障及排查方法,有些光谱仪器还有自诊断功能,当傅里叶红外光谱仪不能正常工作时,…

HDU-1102-Constructing Roads(并查集)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid1102 这题大意就不讲了, 这题很容易,不过我做的很不爽,一个下午,一直WA,后来才发现数组开小了 只开了s[6000],本来100*10010000,要开至少10000的搞糊了…

python统计程序运行时间-如何方便地统计 Python 程序每一个函数、每一行代码执行所花的时间?...

当然是用 line_profiler 堪称神器 贴个官方例子片段 这个功能应该是你想要的吧: Line # Hits Time Per Hit % Time Line Contents149 profile 150 def Proc2(IntParIO): 151 50000 82003 1.6 13.5 IntLoc IntParIO 10 152 50000 63162 1.3 10.4 while 1: 153 50000 69065 1.4…

微信小程序简介、发展史、小程序的优点、申请账号、开发工具、初识wxml文件和wxss文件

微信小程序介绍: 小程序简介: 小程序是一种连接用户与服务的方式,它能在微信内被便捷地获取和传播,具有出色的使用体验。 不需要下载安装,用户通过搜一搜或扫一扫就可以打开使用,使用完后退出即可。 小…

微信小程序中app.js文件、组件、api

app.js文件: 每个小程序都需要在app.js中调用 App 方法注册小程序实例. App({//App实例化,整个小程序只有一个App实例,全部页面共享onLaunch: function () {//onLaunch小程序启动之后触发 },onShow: function () {//onShow小程序启动&#…

tia v15 添加项目_硬技能,TIA 博途软件界面的介绍

在前面的文章中给大家介绍了TIA 博途软件的安装包等介绍,这次小编给大家介绍一下TIA 博途软件的界面。#电工学习PLC#你知道吗,在博途软件的自动化项目任务的创建中,我们可以使用portal视图和项目视图。Portal视图是面向任务的视图&#xff0c…

UIImagePickerController按钮的中文问题

UIImagePickerController按钮的中文问题 执行以下两步即可 1. 在targets中设置region为China 2. 在project中添加支持中文 转载于:https://www.cnblogs.com/YouXianMing/p/3935460.html

Gulp简介、gulp基本使用步骤、gulp-cli工具、gulpfile.js文件、gulp插件

Gulp介绍: gulp概念: 基于node开发的前端构建工具模块,将前端机械化的操作编写成任务自动化操作,类似于webpack构建,可以完成代码压缩、语法转换、抽离公共文件、自动实现浏览器刷新等。 基本使用步骤: …