vite + eslint + airbnb初体验

最近写个人vue项目,最开始用的@vue/cli,起初项目规模小时还好,可是随着项目规模的增大,webpack打包是越来越慢了。。。

Vite介绍

Vite 是一个由原生 ESM 驱动的 Web 开发构建工具。在开发环境下基于浏览器原生 ES imports 开发,在生产环境下基于 Rollup 打包。(不知道比webpack快了十几倍,本人亲测)
它主要具有以下特点:

  • 快速的冷启动
  • 即时的模块热更新
  • 真正的按需编译

那废话少说,我们先直接来试用一下。

创建模板项目

我们快速用vite创建一个vue3模板项目:

npm init vite-app vite-test
// or
yarn create vite-app vite-test

当然,创建react项目也是可以的:

npm init vite-app --template react
// or
yarn create vite-app --template react

添加router vuex

yarn add vue-router@next vuex@next

添加eslint支持

以前用eslint总感觉不自在,怎么它这也管那也管?用了一会直接把rules的内容全部注释掉了。就像我把typescript用成了anyScript。但是用了一段时间后,现在写项目已经离不开它了,没有eslint根本没有码字的欲望。想要把eslint作为你辅助写代码的利器,你需要:

  • 打开保存时自动lint,否则看着满屏的错误,手动改会崩溃的
  • 找到一个符合你的规则,这里我用的是业界公认最好的airbnb
yarn add -D eslint eslint-config-airbnb-base eslint-plugin-import eslint-plugin-vue

然后在你的项目根目录创建一个.eslintrc.js,写入以下内容:

module.exports = {
    extends: ['plugin:vue/vue3-essential', 'airbnb-base'],
    parserOptions: {
        ecmaVersion: 2020,
        sourceType: 'module',
    },
    plugins: ['vue'],
    rules: {
        //自己写一些想配置的规则
    },
    overrides: [
        {
            files: ['*.vue'],
            rules: {
                //这里写覆盖vue文件的规则
            },
        },
    ],
};

使用sass?

当然你也可以使用其他的css预处理器

yarn add -D sass

配置vite.config.js

在项目根目录下新建一个vite.config.js

import path from 'path';

module.exports = {
    base: './',
    // sourcemap: true,
    minify: 'esbuild',
    // 配置别名
    alias: {
        //vite中alias必须以斜线开头和结尾,暂时未知原因,这样其实挺不方便的
        //所以在eslint配置alias和文件中导入路径也要相应的修改
        '/@/': path.resolve(__dirname, './src'),
    },
    cssPreprocessOptions: {
        //这里注意,键名是scss不是sass!一字之差能让你折腾好久
        scss: {
            //这里写你想导入全局scss变量的路径
            //这里注意只能写相对路径,alias貌似在css中不会生效
            additionalData: "@import './src/style/a.scss';",
        },
    },
    // 配置Dep优化行为
    optimizeDeps: {
        include: ['lodash-es'],
    },
};

配置eslint的alias

上面只配置了vite的alias,让vite在运行时能找到文件位置。但是eslint的alias也是要配置的,否则你在写代码时,eslint会提示找不到文件路径。因为eslint不会去读取vite.config.js,它们二者没有关联。所有我们需要添加一个eslint插件

yarn add -D eslint-import-resolver-alias

然后在.eslintrc.js中追加一下内容:

module.exports = {
    //之前的内容,这里已省略
    settings: {
        'import/resolver': {
            alias: {
                map: [
                    ['/@', './src'],
                ],
                extensions: ['.ts', '.js', '.jsx', '.json', '.vue'],
            },
        },
    },
};

具体到文件

//必须以斜线开头!
import xx from '/@/xx.vue';

你可能感兴趣的:(vite + eslint + airbnb初体验)