prettier继承
不支持extends
prettier配置并不支持 extends 关键字,但是我们可以手动合并,比方说我们下载了一个配置包 @repo/config-prettier,我们可以如下继承到自己项目中
// prettier.config.js
const configPrettier = require('@repo/config-prettier');
module.exports = {
...configPrettier,
};
配置包使用了三方库
// @repo/config-prettier的 index.js
export default {
tabWidth: 2, // 缩进2个空格
useTabs: false, // 缩进单位是否使用tab替代空格
semi: true, // 句尾添加分号
singleQuote: true, // 使用单引号代替双引号
printWidth: 10000,
plugins: ['./node_modules/prettier-plugin-sort-imports/dist/index.js'],
sortingMethod: 'lineLength',
sortingOrder: 'ascending',
};
// @repo/config-prettier的 package.json
{
"name": "@repo/config-prettier",
"version": "0.0.1",
"description": "Prettier configuration for the monorepo",
"main": "base.js",
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"prettier-plugin-sort-imports": "^1.8.7"
}
}
使用者需要安装吗?
那我自己的项目还需要安装prettier-plugin-sort-imports 吗?
是的,你还是需要在你的项目中单独安装 prettier-plugin-sort-imports,即使在 @repo/config-prettier 中引用了该插件。
解释原因:
• Prettier 插件的加载方式:Prettier 插件(如 prettier-plugin-sort-imports)必须被安装在使用该配置的项目中,即使你在 @repo/config-prettier 中通过相对路径引用了插件,Prettier 还是会寻找项目中 node_modules 中的插件,而不是通过依赖关系的路径自动加载。
• plugins 字段:在 Prettier 配置中使用 plugins 指定插件时,Prettier 会依赖当前项目的 node_modules 中的插件。所以,即使你在 @repo/config-prettier 配置中引用了插件路径,仍然需要在项目中安装插件。
解决办法
你不能要求每个使用者,都如你所愿“乖乖安装 prettier-plugin-sort-imports”,所以你可以这么做:将配置包@repo/config-prettier 的 package.json 改为
// @repo/config-prettier的 package.json
{
"name": "@repo/config-prettier",
// ...
"peerDependencies": {
"prettier-plugin-sort-imports": "^1.8.7"
}
}
这是因为,用户在安装某个依赖的时候会自动安装它 peerDependencies 里的包
找不到 plugin 的 path
@repo/config-prettier 是我们封装的一个常用prettier的 npm 包,在新项目中我们这么使用
// prettier.config.js
const configPrettier = require('@repo/config-prettier');
module.exports = {
...configPrettier,
};
但这就会出现一个问题:
在@repo/config-prettier 的封装中,针对插件prettier-plugin-sort-imports的引用, 虽然写了相对路径 ['./node_modules/prettier-plugin-sort-imports/dist/index.js',
但是在当前项目中进行prettier时,因prettier运行是在作用域是在跟目录,这会导致在使用者的 node_module里无法找到这个包,既
your project
|--node_modules
|-- @repo/config-prettier
| --node_modules
|--prettier-plugin-sort-imports
有两种办法解决,要么在使用的地方将其依赖提升,或者按照推荐的写法封装: 通过 require('xxx') 反向获取它当前的绝对路径
// @repo/config-prettier/index.js
const pluginPath = require.resolve('prettier-plugin-sort-imports');
module.exports = {
plugins: [pluginPath],
sortingMethod: "lineLength",
sortingOrder: "ascending",
};
prettier继承的更多相关文章
- eslint+prettier+husky+lint-staged 统一前端代码规范
eslint+prettier+husky+lint-staged 统一前端代码规范 遵循编码规范和使用语法检测,可以很好的提高代码的可读性,可维护性,并有效的减少一些编码错误. 1.终极目标 团队中 ...
- 【JavaScript】ESlint & Prettier & Flow组合,得此三神助,混沌归太清
Flow Flow的意义 Flow是faceBook开源的一个JavaScript静态类型检查工具,作用类似TypeScript,但是它不像TS那样是一门独立的语言,而是作为一个babel-plugi ...
- vscode, eslint, prettier, vetur冲突及解决
这3工具都必须安装. 但是安装之后, 规则冲突又让人头疼. 讲下解决方案吧.一 从0开始1. 禁止工作区插件, 如下图: 2. 清空用户设置(Code–>首选项–>设置–>[右上角 ...
- Prettier - Code formatter使用
更多VSCode插件使用请访问:VSCode常用插件汇总 Prettier - Code formatter这是一款 格式化js.css代码插件,暂不解释. Prettier是什么? Prettier ...
- 03.ElementUI源码学习:代码风格检查和格式化配置(ESlint & Prettier)
书接上文.在团队协作中,为避免低级Bug.以及团队协作时不同代码风格对彼此造成的困扰与影响,会预先制定编码规范.使用 Lint工具和代码风格检测工具,则可以辅助编码规范执行,格式化代码,使样式与规则保 ...
- 前端规范之JS代码规范(ESLint + Prettier)
代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...
- 【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范
前言 本文介绍 vue3-element-admin 如何通过ESLint 检测 JS/TS 代码.Prettier 格式化代码.Stylelint 检测 CSS/SCSS 代码和配置 EditorC ...
- javaScript的原型继承与多态性
1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...
- JavaScript的继承实现方式
1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...
- javascript中的继承与深度拷贝
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...
随机推荐
- dify升级,PostgreSQL数据库字段更新处理
一.概述 dify运行在容器中,PostgreSQL用的是阿里云,已经运行了很长一段时间.某些表的数据量很大,比如workflowruns表,就有100GB.这个主要是,详细记录了工作流的执行情况,包 ...
- 康谋分享 | ADTF在CAN方面技术的深入探讨
在当今汽车电子系统的开发中,CAN总线作为车辆内部通信的骨干,承载着大量关键信号的传输.确保这些信号的高效.准确处理,对于车辆系统的稳定性和可靠性至关重要. 一.Signal Config Filte ...
- Issue: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
问题: Fatal error compiling: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImpor ...
- 2319. 判断矩阵是否是一个 X 矩阵
2319. 判断矩阵是否是一个 X 矩阵 题解: 模拟 class Solution { public boolean checkXMatrix(int[][] grid) { int n = gri ...
- vue属性/子属性监听watch的几种方法
特殊字符法 特殊字符+deep法 直接deep法 常规法 直接用如下代码示例吧: data(){ return { goBackHeader:'添加排班', scheduleForm:{ schedu ...
- configfs-用户空间控制的内核对象配置
1. 什么是configfs? configfs 是一个基于内存的文件系统,它提供了与sysfs相反的功能.sysfs 是一个基于文件系统的内核对象视图,而configfs 是一个基于文件系统的内核对 ...
- Web客户端开发
Web开发工具 从高层次来看,可以将客户端工具放入以下三大类需要解决的问题中: 安全网络 - 在代码开发期间有用的工具. 转换 - 以某种方式转换代码的工具,例如将一种中间语言转换为浏览器可以理解的 ...
- 学习unigui【29】UniGUI的RBCA
web程序真是鸡鸣狗盗,零零碎碎. 学习类似SaaS的登录界面,补一大通web的基础知识. http://127.0.0.1:8077和http://127.0.0.1:8077/admin 这是登录 ...
- 【记录】飞书多维表格|连接多选的结果 List 形成字符串(没有 TEXTJOIN 和 INDEX 和 ARRAYFORMULA)
前言 当我使用 TEXTJOIN 或者 ARRAYFORMULA 的时候,它都显示没有.我找了一下文档也没找到解决办法.结果我研究了一下多维表格的设计,详见官方文档:多维表格公式字段概述,才发现它有 ...
- RandomAccessFile、FileInputStream、MappedByteBuffer、FileChannel 区别及应用场景
RandomAccessFile.FileInputStream.MappedByteBuffer.FileChannel 比较 这些类都是Java中用于文件I/O操作的类,但各有特点和适用场景.下面 ...