vue的webpack配置es6转换es5语法、@log、解析原生api、识别es7、代码校验eslint

1、在index.js中添加内容

let fn = () => {
	console.log('log');
}
fn();

2、源文件转换依赖安装
npm install babel-loader @babel/core @babel/preset-env -D
3、在webpack.config.js中添加内容

module: {
		rules: [
			// es6->es5
			{
				test: /\.js$/,
				use: {
					loader: 'babel-loader',
					options: {
						// 用babel-loader需要把es6-es5
						presets:[
							'@babel/preset-env'
						]
					}
				},
			},
......

4、打包执行
npm run dev(package.json有配置)

5、在index.js中添加高级语法内容

/* es6高级语法,需要添加 npm install @babel/plugin-proposal-class-properties -D 依赖 */
class A { // new A() a = 1
    a = 1;
}

6、class语法不识别添加webpack.config.js配置

rules: [
			// es6->es5
			{
				test: /\.js$/,
				use: {
					loader: 'babel-loader',
					options: {
						// 用babel-loader需要把es6-es5
						presets: [
							'@babel/preset-env'
						],
						plugins: [
							'@babel/plugin-proposal-class-properties'
						]
					}
				},
			},

7、@log内置装饰器实现

1、npm install --save-dev @babel/plugin-proposal-decorators -D
2、npm install --save-dev @babel/plugin-proposal-class-properties -D

3、rules里面写
...
                plugins: [
							["@babel/plugin-proposal-decorators", {
								"legacy": true
							}],
							["@babel/plugin-proposal-class-properties", {
								"loose": true
							}]
						]
...

3、npm run dev(package.json已经配置了key为dev的内容)

8、支持class解析结果

9、新增a.js并且添加如下内容

class B {

}

function * gen(params) {
	yield 1;
}

console.log(gen().next())

10、npx weppack测试结果如下所示

扫描二维码关注公众号,回复: 9053923 查看本文章

11、解析上述语法需要

文档:https://babeljs.io/docs/en/babel-plugin-transform-runtime#docsNav

1、npm install --save-dev @babel/plugin-transform-runtime -D
2、npm install @babel/runtime(啥都不加--save)

12、webpack.config.js添加配置信息,默认是包括项目中的所有js所以需要添加enclude

13、排除和包括

此时编译原生api就不会报错了


13、 识别es7语法

1、index.html
/* es7语法 */
console.log('------------------------','aaa'.includes('a'))

2、npm run dev(

如果行就行,不行就添加npm install @babel/polyfill (不能加-D) 会将无法实现的语法,自己实现一遍

14、如何给js添加校验(eslint)

  • 14.0 ->依赖安装 npm install eslint eslint-loader
  • 14.1 ->demo地址:https://eslint.org/demo 勾选环境等配置项目,下载下来的项目命名为.开头,如.eslintrc.json,配置示例内容如下所示情况,可能存在官网打不开的情况,下载不下来的人直接粘贴
  • {
        "parserOptions": {
            "ecmaVersion": 11,
            "sourceType": "module",
            "ecmaFeatures": {}
        },
        "rules": {
            "constructor-super": 2,
            "for-direction": 2,
            "getter-return": 2,
            "no-async-promise-executor": 2,
            "no-case-declarations": 2,
            "no-class-assign": 2,
            "no-compare-neg-zero": 2,
            "no-cond-assign": 2,
            "no-const-assign": 2,
            "no-constant-condition": 2,
            "no-control-regex": 2,
            "no-debugger": 2,
            "no-delete-var": 2,
            "no-dupe-args": 2,
            "no-dupe-class-members": 2,
            "no-dupe-keys": 2,
            "no-duplicate-case": 2,
            "no-empty": 2,
            "no-empty-character-class": 2,
            "no-empty-pattern": 2,
            "no-ex-assign": 2,
            "no-extra-boolean-cast": 2,
            "no-extra-semi": 2,
            "no-fallthrough": 2,
            "no-func-assign": 2,
            "no-global-assign": 2,
            "no-inner-declarations": 2,
            "no-invalid-regexp": 2,
            "no-irregular-whitespace": 2,
            "no-misleading-character-class": 2,
            "no-mixed-spaces-and-tabs": 2,
            "no-new-symbol": 2,
            "no-obj-calls": 2,
            "no-octal": 2,
            "no-prototype-builtins": 2,
            "no-redeclare": 2,
            "no-regex-spaces": 2,
            "no-self-assign": 2,
            "no-shadow-restricted-names": 2,
            "no-sparse-arrays": 2,
            "no-this-before-super": 2,
            "no-undef": 2,
            "no-unexpected-multiline": 2,
            "no-unreachable": 2,
            "no-unsafe-finally": 2,
            "no-unsafe-negation": 2,
            "no-unused-labels": 2,
            "no-unused-vars": 2,
            "no-useless-catch": 2,
            "no-useless-escape": 2,
            "no-with": 2,
            "require-yield": 2,
            "use-isnan": 2,
            "valid-typeof": 2
        },
        "env": {
            "browser": true
        }
    }
  • 14.2 -> 增加权重 官方文档:https://www.npmjs.com/package/eslint-loader

最终代码:

链接:https://pan.baidu.com/s/1i45-_KqAgza4qNQfxKvAvQ 
提取码:0tgx

发布了245 篇原创文章 · 获赞 54 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/104234293
今日推荐