当前位置: 首页 > news >正文

build vue3 后压缩的文件在哪_vue-cli脚手架之build文件夹三

‘use strict‘//js按照严格模式执行

const utils = require(‘./utils‘)//导入utils.js

const webpack = require(‘webpack‘)//使用webpack来使用webpack内置插件

const config = require(‘../config‘)//config文件夹下index.js文件

const merge = require(‘webpack-merge‘)//引入webpack-merge插件用来合并webpack配置对象,也就是说可以把webpack配置文件拆分成几个小的模块,然后合并

const path = require(‘path‘)

const baseWebpackConfig= require(‘./webpack.base.conf‘)//导入webpack基本配置

const CopyWebpackPlugin = require(‘copy-webpack-plugin‘)

const HtmlWebpackPlugin= require(‘html-webpack-plugin‘)//生成html文件

const FriendlyErrorsPlugin = require(‘friendly-errors-webpack-plugin‘)

const portfinder= require(‘portfinder‘)

const HOST= process.env.HOST//process.env属性返回一个对象,包含了当前shell的所有环境变量。这句取其中的host文件?

const PORT = process.env.PORT && Number(process.env.PORT)//获取所有环境变量下的端口?

//合并模块,第一个参数是webpack基本配置文件

const devWebpackConfig =merge(baseWebpackConfig, {

module: {

rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS:true})

},//cheap-module-eval-source-map is faster for development

devtool: config.dev.devtool,//debtool是开发工具选项,用来指定如何生成sourcemap文件,cheap-module-eval-source-map此款soucemap文件性价比最高

//these devServer options should be customized in /config/index.js

devServer: {//webpack服务器配置

clientLogLevel: ‘warning‘,//使用内联模式时,在开发工具的控制台将显示消息,可取的值有none error warning info

historyApiFallback: {//当使用h5 history api时,任意的404响应都可能需要被替代为index.html,通过historyApiFallback:true控制;通过传入一个对象,比如使用rewrites这个选项进一步控制

rewrites: [

{ from:/.*/, to: path.posix.join(config.dev.assetsPublicPath, ‘index.html‘) },

],

},

hot:true,//是否启用webpack的模块热替换特性。这个功能主要是用于开发过程中,对生产环境无帮助。效果上就是界面无刷新更新。

contentBase: false, //since we use CopyWebpackPlugin.这里禁用了该功能。本来是告诉服务器从哪里提供内容,一半是本地静态资源。

compress: true,//一切服务是否都启用gzip压缩

host: HOST || config.dev.host,//指定一个host,默认是localhost。如果有全局host就用全局,否则就用index.js中的设置。

port: PORT || config.dev.port,//指定端口

open: config.dev.autoOpenBrowser,//是否在浏览器开启本dev server

overlay: config.dev.errorOverlay//当有编译器错误时,是否在浏览器中显示全屏覆盖。

? { warnings: false, errors: true}

:false,

publicPath: config.dev.assetsPublicPath,//此路径下的打包文件可在浏览器中访问

proxy: config.dev.proxyTable,//如果你有单独的后端开发服务器api,并且希望在同域名下发送api请求,那么代理某些URL会很有用。

quiet: true, //necessary for FriendlyErrorsPlugin 启用 quiet 后,除了初始启动信息之外的任何内容都不会被打印到控制台。这也意味着来自 webpack 的错误或警告在控制台不可见。

watchOptions: {//webpack 使用文件系统(file system)获取文件改动的通知。在某些情况下,不会正常工作。例如,当使用 Network File System (NFS) 时。Vagrant 也有很多问题。在这些情况下使用轮询。

poll: config.dev.poll,//是否使用轮询

}

},

plugins: [newwebpack.DefinePlugin({‘process.env‘: require(‘../config/dev.env‘)

}),newwebpack.HotModuleReplacementPlugin(),new webpack.NamedModulesPlugin(), //HMR shows correct file names in console on update.

newwebpack.NoEmitOnErrorsPlugin(),//https://github.com/ampedandwired/html-webpack-plugin

new HtmlWebpackPlugin({//模块HtmlWebpackPlugin

filename: ‘index.html‘,//生成的文件的名称

template: ‘index.html‘,//可以指定模块html文件

inject: true//在文档上没查到这个选项 不知道干嘛的。。。

}),//copy custom static assets

new CopyWebpackPlugin([//模块CopyWebpackPlugin 将单个文件或整个文件复制到构建目录

{

from: path.resolve(__dirname,‘../static‘),//将static文件夹及其子文件复制到

to: config.dev.assetsSubDirectory,

ignore: [‘.*‘]//这个没翻译好,百度翻译看不懂,请自己查文档。。。

}

])

]

})//webpack将运行由配置文件导出的函数,并且等待promise返回,便于需要异步地加载所需的配置变量。

module.exports = new Promise((resolve, reject) =>{

portfinder.basePort= process.env.PORT ||config.dev.port

portfinder.getPort((err, port)=>{if(err) {

reject(err)

}else{//publish the new Port, necessary for e2e tests

process.env.PORT =port//add port to devServer config

devWebpackConfig.devServer.port =port//Add FriendlyErrorsPlugin

devWebpackConfig.plugins.push(newFriendlyErrorsPlugin({

compilationSuccessInfo: {

messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],

},

onErrors: config.dev.notifyOnErrors?utils.createNotifierCallback()

: undefined

}))

resolve(devWebpackConfig)

}

})

})

相关文章:

  • window中mysql bat脚本_MySQL window环境下bat脚本定时备份
  • mybatis 字段名自动转小写_mybatis 返回Map类型key改为小写的操作
  • phppython混合开发_PHP资深开发者谈:缘何放弃PHP改用Python
  • python中init和new_Python中__init__和__new__的区别详解
  • lightgbm原理_LightGBM算法原理小结
  • mysql中以下正确的sql是_MySQL数据库中下面两句话的区别:
  • mysql安装需要jdkcheck_linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境...
  • mysql模糊查询员工信息_PHP+MySQL实现模糊查询员工信息功能示例
  • mysql regexp_replace_mysql-使用DISTINCT的REGEXP_REPLACE
  • mysql 上周时间_mysql 获取上周1到周日的时间
  • mysql的备份和恢复命令行_使用MySQL命令行备份和恢复数据库
  • java 双向链表循环_Java实现双向循环链表
  • java 段错误_[原创]记一次java执行段错误及解决过程
  • java反射查询数据库_java反射与注解结合使用(根据传入对象输出查询sql)
  • Java 类Servletrequest_java中servlet中有关HttpServletRequest的不理解
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 11111111
  • Computed property XXX was assigned to but it has no setter
  • conda常用的命令
  • Docker: 容器互访的三种方式
  • input的行数自动增减
  • Java 多线程编程之:notify 和 wait 用法
  • Java程序员幽默爆笑锦集
  • Js基础知识(四) - js运行原理与机制
  • js中的正则表达式入门
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • React系列之 Redux 架构模式
  • Redux 中间件分析
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 给初学者:JavaScript 中数组操作注意点
  • 如何利用MongoDB打造TOP榜小程序
  • 如何实现 font-size 的响应式
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 赢得Docker挑战最佳实践
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​如何防止网络攻击?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (二)构建dubbo分布式平台-平台功能导图
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (区间dp) (经典例题) 石子合并
  • (转)负载均衡,回话保持,cookie
  • (转载)虚函数剖析
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 3.0 linux,.NET Core 3.0 的新增功能