eslint-plugin-package-json

eslint-plugin-package-json

ESLint插件助力维护高质量package.json文件

eslint-plugin-package-json是一款专为package.json文件设计的ESLint插件。它提供多项规则,用于保证文件的一致性、可读性和有效性。主要功能包括属性排序、依赖项检查和版本验证等。该插件适用于独立项目和monorepo结构,配置简便,可与Prettier协同工作。通过使用这个插件,开发团队能更轻松地维护标准化的package.json文件。

ESLintpackage.json插件规则配置Github开源项目
<h1 align="center">eslint-plugin-package-json</h1> <p align="center">用于保持一致、可读性和有效性的package.json文件规则。🗂️</p> <p align="center"> <a href="#contributors" target="_blank"> <!-- prettier-ignore-start --> <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <img alt="所有贡献者:15 👪" src="https://yellow-cdn.veclightyear.com/835a84d5/31fe7c86-cddb-4592-a11a-40e74f6ea9d8.svg" /> <!-- ALL-CONTRIBUTORS-BADGE:END --> <!-- prettier-ignore-end --> </a> <a href="https://codecov.io/gh/JoshuaKGoldberg/eslint-plugin-package-json" target="_blank"><img alt="Codecov 测试覆盖率" src="https://yellow-cdn.veclightyear.com/835a84d5/eb267c4a-bb8e-4b70-8c80-61de7b16cc0a.svg"/></a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="贡献者公约" src="https://img.shields.io/badge/code_of_conduct-enforced-21bb42" /></a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/blob/main/LICENSE.md" target="_blank"><img alt="许可证:MIT" src="https://img.shields.io/github/license/JoshuaKGoldberg/eslint-plugin-package-json?color=21bb42"></a> <img alt="代码风格:Prettier" src="https://yellow-cdn.veclightyear.com/835a84d5/3a9f73bb-ff06-430c-8fdc-e1d1c829b84b.svg" /> <a href="https://www.npmjs.com/package/eslint-plugin-package-json"><img alt="npm包版本" src="https://img.shields.io/npm/v/eslint-plugin-package-json?color=21bb42" /></a> </p>

安装

本插件需要 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-propertiessort-collections 规则相同的 package.json 键排序。我们建议同时使用 Prettier 插件和 eslint-plugin-package-json 的推荐配置。默认设置不会冲突,Prettier 插件可以在编辑器保存时和/或作为 Git 钩子快速修复排序。

支持的规则

<!-- prettier-ignore-start --> <!-- begin auto-generated rules list -->

💼 表示在配置中启用。
✅ 表示在 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文件,使得这个插件非常适合单体仓库。

贡献者

<!-- spellchecker: disable --> <!-- ALL-CONTRIBUTORS-LIST:START - 请勿删除或修改此部分 --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="https://alan.norbauer.com"><img src="https://avatars.githubusercontent.com/u/1009?v=4?s=100" width="100px;" alt="Alan"/><br /><sub><b>Alan</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Aaltano" title="Bug报告">🐛</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=altano" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/AndreasLindbergPAF"><img src="https://avatars.githubusercontent.com/u/59874563?v=4?s=100" width="100px;" alt="Andreas Lindberg"/><br /><sub><b>Andreas Lindberg</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Aandreaslindbergpaf" title="Bug报告">🐛</a></td> <td align="center" valign="top" width="14.28%"><a href="http://technotes.khitrenovich.com/"><img src="https://avatars.githubusercontent.com/u/3424762?v=4?s=100" width="100px;" alt="Anton Khitrenovich"/><br /><sub><b>Anton Khitrenovich</b></sub></a><br /><a href="#ideas-khitrenovich" title="想法、规划与反馈">🤔</a></td> <td align="center" valign="top" width="14.28%"><a href="https://azat.io"><img src="https://avatars.githubusercontent.com/u/5698350?v=4?s=100" width="100px;" alt="Azat S."/><br /><sub><b>Azat S.</b></sub></a><br /><a href="#ideas-azat-io" title="想法、规划与反馈">🤔</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=azat-io" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Zamiell"><img src="https://avatars.githubusercontent.com/u/5511220?v=4?s=100" width="100px;" alt="James"/><br /><sub><b>James</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=Zamiell" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/zetlen"><img src="https://avatars.githubusercontent.com/u/1643758?v=4?s=100" width="100px;" alt="James Zetlen"/><br /><sub><b>James Zetlen</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=zetlen" title="代码">💻</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Azetlen" title="Bug报告">🐛</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=zetlen" title="文档">📖</a> <a href="#infra-zetlen" title="基础设施(托管、构建工具等)">🚇</a> <a href="#maintenance-zetlen" title="维护">🚧</a> <a href="#tool-zetlen" title="工具">🔧</a></td> <td align="center" valign="top" width="14.28%"><a href="https://piranna.github.io/"><img src="https://avatars.githubusercontent.com/u/532414?v=4?s=100" width="100px;" alt="Jesús Leganés-Combarro"/><br /><sub><b>Jesús Leganés-Combarro</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=piranna" title="代码">💻</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="http://www.joshuakgoldberg.com/"><img src="https://avatars.githubusercontent.com/u/3335181?v=4?s=100" width="100px;" alt="Josh Goldberg ✨"/><br /><sub><b>Josh Goldberg ✨</b></sub></a><br /><a href="#tool-JoshuaKGoldberg" title="工具">🔧</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3AJoshuaKGoldberg" title="Bug报告">🐛</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=JoshuaKGoldberg" title="代码">💻</a> <a href="#infra-JoshuaKGoldberg" title="基础设施(托管、构建工具等)">🚇</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=JoshuaKGoldberg" title="文档">📖</a> <a href="#maintenance-JoshuaKGoldberg" title="维护">🚧</a> <a href="#ideas-JoshuaKGoldberg" title="想法、规划与反馈">🤔</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/kendallgassner"><img src="https://avatars.githubusercontent.com/u/15275462?v=4?s=100" width="100px;" alt="Kendall Gassner"/><br /><sub><b>Kendall Gassner</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=kendallgassner" title="代码">💻</a> <a href="#maintenance-kendallgassner" title="维护">🚧</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/KristjanESPERANTO"><img src="https://avatars.githubusercontent.com/u/35647502?v=4?s=100" width="100px;" alt="Kristjan ESPERANTO"/><br /><sub><b>Kristjan ESPERANTO</b></sub></a><br /><a href="#ideas-kristjanesperanto" title="想法、规划与反馈">🤔</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Akristjanesperanto" title="错误报告">🐛</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=kristjanesperanto" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/nschonni"><img src="https://avatars.githubusercontent.com/u/1297909?v=4?s=100" width="100px;" alt="Nick Schonning"/><br /><sub><b>Nick Schonning</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=nschonni" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/sirugh"><img src="https://avatars.githubusercontent.com/u/1278869?v=4?s=100" width="100px;" alt="Stephen"/><br /><sub><b>Stephen</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=sirugh" title="代码">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://hyoban.cc"><img src="https://avatars.githubusercontent.com/u/38493346?v=4?s=100" width="100px;" alt="Stephen Zhou"/><br /><sub><b>Stephen Zhou</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Ahyoban" title="错误报告">🐛</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=hyoban" title="代码">💻</a> <a href="#ideas-hyoban" title="想法、规划与反馈">🤔</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=hyoban" title="文档">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://ota-meshi.github.io/"><img src="https://avatars.githubusercontent.com/u/16508807?v=4?s=100" width="100px;" alt="Yosuke Ota"/><br /><sub><b>Yosuke Ota</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Aota-meshi" title="错误报告">🐛</a> <a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/commits?author=ota-meshi" title="代码">💻</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/b3rnhard"><img src="https://avatars.githubusercontent.com/u/10774404?v=4?s=100" width="100px;" alt="b3rnhard"/><br /><sub><b>b3rnhard</b></sub></a><br /><a href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues?q=author%3Ab3rnhard" title="错误报告">🐛</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END --> <!-- spellchecker: enable -->

致谢

非常感谢 @zetlen 创建了这个包的初始版本和核心基础架构!💖

💙 本包是使用 create-typescript-app 模板创建的。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多