@liuyi_npm/vue-cli-plugin-format v1.0.0
vue-cli-plugin-format
基于 @vue/cli,整合 eslint 和 prettier 的 vue-cli 脚手架插件。
具有如下特点:
eslint采用prettier规则;prettier全局格式化代码;开启
lintOnSave和lintOnCommit;.editorconfig统一编辑器配置;添加包含内网仓库的
.npmrc和.yarnrc文件。
1.安装
利用 @vue/cli 的指令,注册该插件:
vue add @cbibank/format上述命令运行成功之后,如果项目中已存在 @vue/cli-plugin-eslint,则会自动执行一次 vue-cli-service format:lint 指令。
1-1.scripts
如果选择的项目打包器类型是 vue-cli-service,则在 package.json 中的 scripts 中会增加如下脚本:
{
"scripts": {
"format": "npm run format:lint && npm run format:pretty",
"format:lint": "vue-cli-service format:lint",
"format:pretty": "prettier . --write"
}
}其中:
format:lint脚本与vue-cli-service lint行为一致。默认只会检测src/、tests以及根目录下*.js、.*.js文件。format:pretty会格式化当前项目下的所有可识别文件(不包含.prettierignore内声明范围)。
1-2.lint-staged
项目中的 package.json 会额外添加如下字段:
{
"devDependencies": {
"lint-staged": "^11.1.2"
},
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"*.{js,jsx,vue}": "eslint --fix"
}
}在使用 git commit 提交暂存区代码时,会对这部分代码进行 lint 格式化。
2.本地调试
如果要在本地开发调试此项目,请参考以下内容和Vue CLI插件开发指南。
2-1.安装依赖
以 yarn 为例,首先在项目根目录下,执行:
npm install ./packages/vue-cli-plugin/format --save-dev执行完毕之后,node_modules 中会出现 @cbibank/vue-cli-plugin-format 插件。
注意,这里相比 yarn add,更推荐使用 npm install 时,npm install 会生成软连接。
也就是意味着,后续更改项目中的代码,会自动同步到 node_modules 中。
如果使用 yarn add 结合 yarn link,最终的效果也比不上 npm install <folder>。
实际上 npm link 创建的软连接,与 npm install <folder> 创建的软连接,在效果上是有区别的。
2-2.调用依赖
安装完毕依赖后,需要借助 vue-cli ,执行:
vue invoke @cbibank/format后续依赖的更新,不断调用此命令进行调试即可。
FAQ
1.依赖冲突
当 npm >= 8 时,执行 npm install 有可能出现如下错误:
dev eslint-plugin-vue@"^8.0.3" from the root project
Could not resolve dependency:
npm ERR! peer eslint-plugin-vue@"^7.0.0" from @vue/eslint-config-standard@6.1.0这是因为 devDependencies 与 peerDependencies 冲突导致。
可以看做是 @vue/cli-plugin-eslint 的 bug。(另一层原因是,npm 在 v8 及以上版本,增加了 dependencies 与 peerDependencies 的严格判断)
解决方案是添加 --force 或者 --legacy-peer-dep:
npm install --force
# or
npm install --legacy-peer-dep可以参考这个issue
2.Progress Plugin Invalid Options
如果在使用 npm run start 或者 yarn start 启动项目的过程中,有如下错误:
ValidationError: Progress Plugin Invalid OptionsProgress Plugin Invalid Options归根结底,是 webpack 版本不一致导致的(依然是 npm 的锅)。
譬如,vue-cli 依赖的是 webpack@5,但实际安装的是 webpack@4。
解决办法是,删除 node_modules,使用 yarn 重新解析依赖即可。
1 year ago