Webpack处理js资源

处理js资源

有人可能会问,js资源Webpack不能已经处理了吗,为什么我们还要处理呢?
原因Webpack对js处理是有限的,只能编译js中ES模块化语法,不能编译其他语法,导致js不能再IE等浏览器运行,所以我们希望做一些兼容性处理。
其次开发中,团队对代码格式是有严格要求的,我们不能由肉眼去检测代码格式,需要使用专业的工具检测。

  • 针对js兼容性处理,我们使用Babel来完成
  • 针对代码格式,我们使用Eslint来完成

我们先完成Eslint,检测代码格式无误后,再由Babel做代码兼容性处理。

Eslint

可组装JavaScript和JSX检查工具
这句话的意思就是:它是用来检测js和jsx语法的工具,可以配置各项功能
我们使用Eslint,关键是写Eslint配置文件,里面写上各种rules规则,将来运行Eslint时就会以写的规则对代码进行检查

1、配置文件

配置文件有很多种写法:

  • .eslintrc.* :新建文件,位于项目的根目录
  • .eslintrc
  • .eslintrc.js
  • .eslintrc.json
  • 区别在于配置格式不一样

package.json和eslintConfig:不需要创建文件,在原有文件基础上写
Eslint会查找和自动读取它们,所以以上配置文件只需要存在一个即可

2、具体配置

.eslintrc.js配置文件为例:

module.exports = {
	// 解析选项
	parserOptions: {},
	// 具体检测规则
	rules: {},
	// 继承其他规则
	extends: [],
	// ...
	// 其他规则详见:https://eslint.bootcss.com/docs/user-guide/configuring
};

1、parserOptions解析选项

parserOptions: {
	ecmaVersion: 6, // ES语法版本
	sourceType: "module", // ES模块化
	ecmaFeatures: { // ES其他特性
		jsx: true // 如果是React项目,就需要开启JSX语法
	}
}

2、rules具体规则

  • "off"或0 - 关闭规则
  • "warn"或1 - 开启规则,使用警告级别的错误:warn(不会导致程序推出,黄色警告)
  • "error"或2 - 开启规则,使用错误级别的错误:error(当被触发的时候,程序会退出,红色警告)
rules: {
	semi: "error", // 禁止使用分号
	'array-callback-return': 'warn', // 强制数组方法的回调函数中有return语句,否则警告
	'default-case': [
		'warn', // 要求switch语句中有default分支,否则警告
		{ commentPattern: '^no default$' } // 允许在最后注释no default,就不会有警告了
	],
	eqeqeq: [
		'warn', // 强制使用 === 和 !==,否则警告
		'smart' // 除了少数情况下不会有警告
	]
}

更多详见文档。规则文档

3、extend 继承
开发中一点点写rules规则太费劲了,所以有更好的办法,继承现有的规则。
现在一下较有名的规则:

  • Eslint官方的规则:eslint:recommended
  • Vue Cli官方的规则:plugin:vue/esential
  • React Cli官方的规则:react-app
module.exports = {
	extends: ['react-app'],
	rules: {
		// 我们的规则会覆盖掉react-app的规则
		// 所以想要修改规则直接改就是了
		eqeqeq: ['warn', 'smart']
	}
}

3、在Webpack中使用
下载包

npm install eslint-webpack-plugin eslint --save-dev

@webpack.config.js

const ESLintPlugin = require('eslint-webpack-plugin');

module.exports = {
	//...
	plugins: [new ESLintPlugin({
		// 检测哪些文件
		context: path.resolve(__dirname, "src")
	})]
	//...
}

@eslintrc.js

module.exports = {
	// 继承Eslint规则
	extends: ['eslint:recommended'],
	env: {
		node: true, // 启用node中全局变量
		brower: true // 启用浏览器全局变量
	}parserOptions: {
		ecmaVersion: 6,
		sourceType: "module"
	},
	rules: {
		"no-var": 2, // 不能使用var定义变量
	}
}

忽略检查目录
新建.eslintignore,直接加入对应目录

Babel

JavaScript编译器
主要用于将ES6语法编写的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器或其他环境中

1、配置文件

配置文件有很多种写法:

  • babel.config.*:新建文件,位于项目根目录
  • babel.config.js
  • babel.config.json
  • .babelrc.*:新建文件,位于项目根目录
  • .babelrc
  • .babelrc.js
  • .babelrc.json
  • package.json中babel:不需要创建文件,在原有文件基础上写Babel会查找和自动读取它们,所以以上配置文件只需要存在一个即可

2、具体配置

以babel.config.js配置文件为例:

module.exports = {
	// 预设
	presets: []
}

1、presets预设
简单理解:就是一组Babel组件,扩展Babel功能

  • @babel/preset-env:一个智能预设,允许您使用最新的JavaScript。
  • @babel/preset-react:一个用来编译React jsx语法的预设
  • @babel/preset-typescript:一个用来编译TypeScript语法的预设

3、在Webpack中使用

1、下载包

npm install babel-loader @babel/core @babel/preset-env -D

2、定义Babel配置文件

@webpack.config.js

{
	test: /\.js$/,
	exclude: /node_modules/, // 排除node_modules中的js文件(这些文件不处理)
	loader: 'babel-loader'
}

@babel.config.js

module.exports = {
	// 智能预设,能够编译ES6语法
	presets = ["@babel/preset-env"]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值