使用npm包验证包名称

Ale*_*lls 13 node.js npm

有没有办法使用npm包来验证包名?

const npm = require('npm');

const isValid = npm.validatePackageName('foobar'); // true
const isValid = npm.validatePackageName('-4! *'); // false
Run Code Online (Sandbox Code Playgroud)

我看到一个userland包执行此操作,但肯定npm包本身可以做到这一点?是否有从该包中导出的公用事业?

Nik*_*nov 11

有效名称

var validate = require("validate-npm-package-name")

validate("some-package")
validate("example.com")
validate("under_score")
validate("123numeric")
validate("excited!")
validate("@npm/thingy")
validate("@jane/foo.js")
Run Code Online (Sandbox Code Playgroud)

所有上述名称都是有效的,因此您将获得此对象:

{
  validForNewPackages: true,
  validForOldPackages: true
}
Run Code Online (Sandbox Code Playgroud)

名称无效

validate(" leading-space:and:weirdchars")
Run Code Online (Sandbox Code Playgroud)

那从来就不是一个有效的包名,所以你得到这个:

{
  validForNewPackages: false,
  validForOldPackages: false,
  errors: [
    'name cannot contain leading or trailing spaces',
    'name can only contain URL-friendly characters'
  ]
}
Run Code Online (Sandbox Code Playgroud)

来源:https://github.com/npm/validate-npm-package-name