【webpack】一些零碎的知识点记录:eslint配置、source-map配置、devServer配置

这篇具有很好参考价值的文章主要介绍了【webpack】一些零碎的知识点记录:eslint配置、source-map配置、devServer配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

有些知识点不知道咋归类,就先暂时放在同一个文章里了。这里只记录配置方式,配置的东西是什么就不过多解释了,因为一般需要配置这些东西的也都了解是什么了。


eslint

一般在用cli创建vue工程或者cra创建react工程的时候,会默认帮你安装,webpack会自动帮你配置好,我也比较推荐这种形式。

但是要是没有也没关系,自己重新添加即可。

安装

npm i eslint-loader eslint -D

同时还需要一个代码规范库,这里例子选用airbub,我们选择不包含react规范的eslint-config-airbub-base,这个库也需要另外的插件支持eslint-plugin-import。

npm i eslint-config-airbub-base eslint-plugin-import -D

配置

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
	module: {
		rules: [
			{
				test: /\.js$/,
				exclude: /node_modules/, // 排除对第三方库的检查
				loader: 'eslint-loader',
				options: {
					fix: true, // 开启自动修复
				}
			}
		]
	},
	plugins: [
		new HtmlWebpackPlugin({
			template: './src/index.html' 
		})
	]
}

设置规则

可以在package.json中eslintConfig中设置:

{
	"eslintConfig" : {
		"extends": "airbub-base" // 继承我们安装的airbub
	}
}

devtool设置js.map文件

这是啥就不解释了

使用

module.exports = {
	devtool: 'source-map'
}

模式解释

可以配置很多种模式,但我只记录我认为有用的模式,不增加心智负担

  • source-map:生成js.map文件,让压缩后的代码在控制台查看起来和源码差不多,方便定位问题
  • nosources-source-map:生成js.map文件,此时如果报错了,只会和你说在源码哪个位置报错(类似index.js7:2),但是你无法查看代码文件,因为map文件不给你看。

不写devtool,直接就不生成map文件了

文件说明

js.map文件一般都是很大的,因为你的工程代码量很多,但有些东西是固定的,可以说说:

内容整理来自https://www.python100.com/html/4WMO9FF4328L.html

{
  "version": 3, // 指定map文件版本
  "file": "script.min.js", // 压缩后的代码文件名
  "sourceRoot": "", // 源文件的根路径
  "sources": [ // 压缩前的文件名数组,用来指定map文件中各个部分对应的源代码
    "script.js"
  ],
  "names": [], // 指定各个变量和函数名的数组。这在调试的时候可以通过map来查看变量和函数名称
  "mappings": ";;AAAA,GAAIA,IAAIC,MAAY,CAAZ,KAAK,EAAE;CCAgBF,EAAE,KAAK", // 压缩后的代码和源代码对应的具体位置。这是一个非常复杂的字符串,它通过映射的方式来指定压缩后的代码和原始代码之间的对应关系
  "sourcesContent": [ // 每个文件的原始代码
    "console.log(\"hello world\");"
  ]
}

了解就行了,一般也不会去细看map文件

建议方案

我的建议是开发环境开启,但生产环境为了代码安全,还是选择关闭。

但是咧,这样排查生产环境问题就会很麻烦了,难以定位到错误,所以生产的要单独一个方案处理。

我看到的基本都是采用监控的方式,可以看看这篇文章:生产上的问题你不会用 sourcemap 定位吗?


devServer

一般在用cli创建vue工程或者cra创建react工程的时候,会默认帮你安装,webpack会自动帮你配置好,我也比较推荐这种形式。

但是要是没有也没关系,自己重新添加即可。

安装

npm i webpack-dev-server

配置

一些默认就配置的很好的功能就不记录了,例如热刷新hot、开启gzip压缩compress文章来源地址https://www.toymoban.com/news/detail-640291.html

module.exports = {
	devServer: {
		open: true, // 项目启动后默认打开网址
		port: 8081, // 端口号
	    proxy: { // 代理请求服务
	      '/api': { // 识别符号
	        target: 'https://mock.mengxuegu.com/mock/64cc976f686aea63fd6b58d9/ui-collection', // 替换的目标地址
	        pathRewrite: { // 这里可以把地址修改
	          // 去掉api
	          '^/api': '/',
	        },
	      },
	    },
	    server: 'https', // 强行用https请求,慎用
	  }
}

到了这里,关于【webpack】一些零碎的知识点记录:eslint配置、source-map配置、devServer配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言零碎知识点之字符串数组

    在C语言中字符串数组有两种表示方法: 第一种, 二维字符数组 可以利用二维字符数组来表示字符串,格式是: char strs[row][col]; 。例如: 其中的 row 表示二维数组中的行,表示有几个字符串;而 col 表示二维数组中的列,表示能存放字符串的最大长度。 第二种, 字符指针数

    2024年01月18日
    浏览(50)
  • 前端知识点、技巧、webpack、性能优化(持续更新~)

    可以把  图片转换成  base64  放在src里面   减少服务器请求  但是图片会稍微大一点点 以上的方法不需要一个一个自己转化 可以在webpack  进行 性能优化   (官网有详细描述)

    2024年03月10日
    浏览(46)
  • 前端一些知识点

    由来 cookie设计的初衷是用于维护HTTP状态 原理 浏览器首先发送一个无状态请求到服务端 服务端带上cookie返回 浏览器后面的请求都会带上cookie(如果客户端或者服务端对cookie没有操作的话) 生成机制 服务端生成,在Http Response Header 中 Set-Cookie 客户端生成,通过 document.cookie设

    2024年03月13日
    浏览(49)
  • 一些知识点小细节

    当遇到的问题有关逆序输出,可以转换一下思想,就是使用for循环的时候,i的初始化是从数组或者是字符串的最后一个,然后注意设置循环结束的条件,最重要的是不要忘记i--;而不是I++;  注意:当要逆序输出的是字符串类型,可以使用StringBuilder类,因为StringBuilder类有 r

    2024年04月13日
    浏览(42)
  • C++11一些知识点

    1、C++11实现生产者与消费者模型 2、unique_lock与lock_guard的比较 引用自:施磊老师的《C++高级课程》

    2024年02月12日
    浏览(40)
  • PLSQL一些常用的知识点

    此处简单的记录一下在 oracle中如何使用plsql语法,记录一些简单的例子,防止以后忘记。 统计总共有多少个学生,并进行if判断。 输出1到100 需要放到 execute immediate 中执行,否则会报错。 存在更新,不存在插入。 包头 可以简单的理解 java 中的接口。 包体 可以简单的理解

    2024年02月04日
    浏览(40)
  • mysql innodb一些知识点

    1、事务和锁的关系; 在MySQL事务中,只要开始了一次事务,就会自动加上一个共享锁(Shared Lock)。这个锁会在事务结束时自动释放。如果在事务中需要更新某个数据对象,那么MySQL会将该数据对象的共享锁升级为排他锁(Exclusive Lock),这可以确保在其他事务中对该数据对象

    2024年02月14日
    浏览(39)
  • 一些关于c++的琐碎知识点

    目录 bool强转 const构成重载:const修饰*p  移动构造 new int (10)所做的四件事 this指针---为什么函数里面需要this指针? .和-的区别 new创建对象 仿函数 new和malloc的区别 c++系统自动给出的函数有 delete和delete[ ]区别何在 检查有没有析构函数 explict外部 内存泄漏的本质:丢失了内存地

    2024年02月07日
    浏览(49)
  • 关于BGP的一些知识点;(1)

    BGP路由属性中:     公认必遵属性有:Origin, AS_PATH,Next_hop      公认任意有:Local_Pref, Atomic_aggregate,        其中MED为可选非过渡不属于公认属性  Local-Preference是公认任意属性,且只能在一个AS内传播,默认值为100 BGP的Cluster_List 属性用来标识路由器反射组,是可选非过

    2024年02月07日
    浏览(50)
  • 关于set变更通知涉及的一些知识点

    在这个示例中,我们声明了一个私有字段  _name  作为存储名称的后端字段,并将其封装在公共属性  Name  中。在 setter 方法中,我们首先检查新值是否与旧值相同。如果不同,我们才更新存储字段,并调用  OnNameChanged()  方法来引发  NameChanged  事件。 注意, OnNameChanged  方

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包