上面已经搭建好了pnpm+monorepo的基础环境。本文初始化workspace-root的配置,包括:通用配置文件、公共依赖、ESLint。1通用配置文件在项目根目录下添加如下配置文件。添加.editorconfig编辑器格式配置文件[*.{js,cjs,ts,jsx,tsx,vue,html,css,scss,md}]indent_style=spaceindent_size=2trim_trailing_whitespace=trueinsert_final_newline=true添加.gitignoregit忽略文件日志*.log*node_modulesdistlibdist-ssr*.local.vscode/*!.vscode/extensions.json.idea.DS_Store*.suo*.ntvs**.njsproj*.sln*.sw?说明:在某些文章中,会同样创建一个.npmrc文件,配置shamefully-hoist为true,这个操作的目的是进行依赖提升,但是pnpm不推荐这样做,所以我们不配置:2在根目录下安装publicdependencies可以使用子模块中的依赖,所以为了避免在不同的模块中安装相同的依赖,我们将相同的依赖提取到根项目中。pnpminstallvue-wpnpminstall@types/nodesasstypescriptvitevue-tsc@vitejs/plugin-vue@vitejs/plugin-vue-jsx-D-w因为我们的项目配置了monorepo,在根目录下(workspace-root)安装依赖需要指定-w,否则会安装失败。3ESLint配置我们所有的模块都需要ESLint校验,所以ESLint可以配置在根目录下。ESLint配置过程和之前写的“创建vite+vue3项目”步骤基本一致。monorepo略有不同,这里重复一下。安装依赖开发依赖:pnpminstalleslint-D-wInitializeESLintConfigurenpxeslint--init执行上述命令后,控制台会出现如下步骤:1)需要安装@eslint/create-config,询问是否继续:当然需要继续,直接回车;2)WhyuseESLint:IchoosethelastoneTochecksyntax,findproblems,andenforcecodestyle(检查语法,发现问题,强制代码风格)3)Whichmodularmethodtouse:yesChooseJavaScriptmodules(import/export)(我参与的vue项目几乎都是ESModule)4)项目使用什么框架:Vue.js5)项目是否使用TypeScript:是6)项目运行在什么环境:Browser7)如何定义projectStyle:UseapopularstyleguideUseapopularstyle8)选择其中一种流行风格:Standard9)ESLint配置文件格式:JavaScript10)根据上面的选择,提示需要安装很多依赖,你呢要安装吗?是11)选择安装使用的包管理工具:pnpm选择pnpm回车,会在项目根目录下生成.eslintrc.cjs文件,但是控制台会报ERR_PNPM_ADDING_TO_ROOT的错误,如图下图:这是因为自动安装的依赖没有带-w,所以需要复制红框中的依赖重新安装:pnpminstalleslint-plugin-vue@latest@typescript-eslint/eslint-plugin@latesteslint-config-standard@latesteslint-plugin-import@^2.25.2eslint-plugin-n@^15.0.0eslint-plugin-promise@^6.0.0@typescript-eslint/parser@latest-D-w安装vite-plugin-eslintplugin:pnpminstallvite-plugin-eslint-D-w由于包不同,vite的配置不一样,所以后面插件开发各个模块的时候配置修改ESLint配置文件即可。eslintrc.cjs:module.exports={root:true,env:{browser:true,es2021:true,},extends:['plugin:vue/vue3-essential','standard'],parserOptions:{ecmaVersion:'latest',解析器:'@typescript-eslint/parser',sourceType:'module'},插件:['vue','@typescript-eslint'],规则:{'vue/multi-word-component-names':'off'}}添加ESLint忽略文件,忽略打包生成的目录dist和lib。在项目根目录下创建.eslintignore,内容如下:lib/dist/在IDE中配置ESLint。我使用的是WebStorm,配置如下:本文完成workspace-root的初始配置,接下来就是搭建组件库的开发环境。
