logo科技微讯

看源码:npmlint

作者:科技微讯
日期:2023-06-01
📝 笔记

npmlint 是一个用来检查 package.json 文件的工具,它会按照最佳实践告诉你 package.json 是否缺少一些字段,或哪些字段的值不合适等。

在你需要 lint 的 package 目录中使用 npmlintnpmlint 会通过 findup-sync 从当前目录及其父目录中寻找最近的那个 package.json 文件,如果找到了就读取这个 json 文件,然后对它的字段进行分析。

作者在 rules 文件夹中定义了一些规则,默认会依据这些规则分析 package.json,用户也可以提供自定义规则。

有一个规则叫 missing-package-props,这里列出了一些建议字段,如果发现你的 package.json 没有,就会在检查结果中告诉你缺少了哪些字段。

const recommendedProps = [
	'name',
	'version',
	'description',
	'keywords',
	'author',
	'main',
	'files',
	'repository',
	'engines'
];

其他一些规则:

  • 使用 node-semver 判断 version 字段的值是否 valid;
  • 如果有 typescript 代码,会看看 scripts 字段是否有子字段 prepublish,因为 ts 代码需要先 compile 为 js 代码,如果存在 dependencies.typescript 字段,还会提醒你 typescript 应该安装为 devDependency 而不是 dependency
  • 如果缺少 scripts.test 会提醒你加上测试;

npmlint 还有一个 reporters 文件夹,其实就是定义检测结果的输出格式和内容。用户可以指定自定义的 reporter,这个 reporter 可以是一个 npm 库。如果你提供了一个 npm 库给 get-reporter.js 函数,那它会使用 resolve 定位这个 npm 库所在的位置,并 require 进来。

这个项目用了几个我没用过的库:

  • findup-sync:在当前目录或其父目录,定位最近的某个文件,并返回这个文件的路径;
  • glob:使用 glob pattern 匹配文件;
  • resolve:提供 npm 库的名称,返回这个库入口文件的路径;
  • semver:判断 version 字段是否符合要求;
  • update-notifier:提醒升级 npm 库;
  • sudo-block:提醒用户要用 root 权限执行命令;

相关文章:

donation赞赏
thumbsup0
thumbsdown0
暂无评论