eslint-plugin-package-json
用于保持一致、可读性和有效性的package.json文件规则。🗂️
安装
本插件需要 ESLint 8 和 jsonc-eslint-parser
:
npm install eslint eslint-plugin-package-json jsonc-eslint-parser --save-dev
使用方法
扁平配置
本插件的推荐配置会在 **/package.json
文件上启用其规则,并使用 jsonc-eslint-parser
解析它们:
在你的 ESLint 配置文件中:
import packageJson from "eslint-plugin-package-json/configs/recommended";
export default [
// 你的其他 ESLint 配置
packageJson,
];
如果你想覆盖推荐的规则:
import packageJson from "eslint-plugin-package-json/configs/recommended";
export default [
// 你的其他 ESLint 配置
{
...packageJson,
rules: {
...packageJson.rules,
"package-json/valid-package-def": "off",
},
},
];
有关如何自定义规则和其他配置设置的详细信息,请参阅 ESLint 的《配置文件》指南。
传统配置
在你的 ESLint 配置文件中为 package.json
文件添加一个覆盖,指定本插件、jsonc-eslint-parser
以及其推荐规则:
module.exports = {
overrides: [
{
extends: ["plugin:package-json/recommended"],
files: ["package.json"],
parser: "jsonc-eslint-parser",
plugins: ["package-json"],
},
],
};
你可能还想单独配置规则。有关如何自定义规则的详细信息,请参阅 ESLint 的《配置规则》指南。
module.exports = {
overrides: [
{
extends: ["plugin:package-json/recommended"],
files: ["package.json"],
parser: "jsonc-eslint-parser",
plugins: ["package-json"],
rules: {
"package-json/valid-package-def": "error",
},
},
],
};
与 Prettier 一起使用
prettier-plugin-packagejson
是一个 Prettier 插件,它强制执行与默认选项下的 order-properties
和 sort-collections 规则相同的 package.json
键排序。我们建议同时使用 Prettier 插件和 eslint-plugin-package-json
的推荐配置。默认设置不会冲突,Prettier 插件可以在编辑器保存时和/或作为 Git 钩子快速修复排序。
支持的规则
💼 表示在配置中启用。
✅ 表示在 recommended
配置中设置。
🔧 表示可通过 --fix
CLI 选项 自动修复。
💡 表示可通过 编辑器建议 手动修复。
名称 | 描述 | 💼 | 🔧 | 💡 |
---|---|---|---|---|
order-properties | 包属性必须按标准顺序声明 | ✅ | 🔧 | |
repository-shorthand | 强制使用对象或简写方式声明仓库 | ✅ | 🔧 | |
sort-collections | 依赖项、脚本和配置值必须按字母顺序声明 | ✅ | 🔧 | |
unique-dependencies | 确保如果指定了仓库目录,它与package.json文件的路径匹配 | ✅ | 💡 | |
valid-local-dependency | 检查package.json中本地依赖项的存在性 | ✅ | ||
valid-name | 强制包名为有效的npm包名 | ✅ | ||
valid-package-def | 确保package.json包含npm规范要求的所有属性 | ✅ | ||
valid-repository-directory | 确保如果指定了仓库目录,它与package.json文件的路径匹配 | ✅ | 💡 | |
valid-version | 强制包版本为有效的语义化版本规范 | ✅ |
这些规则仅在package.json
文件上运行;它们将忽略所有其他被检查的文件。
它们可以检查项目根目录和项目任何子文件夹中的package.json
文件,使得这个插件非常适合单体仓库。
贡献者
致谢
非常感谢 @zetlen 创建了这个包的初始版本和核心基础架构!💖
💙 本包是使用 create-typescript-app 模板创建的。