использовать пакет npm для проверки имени пакета

Есть ли способ использовать пакет npm для проверки имени пакета?

const npm = require('npm');

const isValid = npm.validatePackageName('foobar'); // true
const isValid = npm.validatePackageName('-4! *'); // false

Я вижу пакет userland, который делает это, но, конечно, сам пакет npm может это сделать? Есть ли общедоступная утилита, экспортированная из этого пакета?

Ответ 1

Действительные имена

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")

Все вышеупомянутые имена действительны, поэтому вы вернете этот объект:

{
  validForNewPackages: true,
  validForOldPackages: true
}

Недопустимые имена

validate(" leading-space:and:weirdchars")

Это никогда не было допустимым именем пакета, поэтому вы получите следующее:

{
  validForNewPackages: false,
  validForOldPackages: false,
  errors: [
    'name cannot contain leading or trailing spaces',
    'name can only contain URL-friendly characters'
  ]
}

источник: https://github.com/npm/validate-npm-package-name

Ответ 2

Правила именования:

Ниже приведен список правил, в которых правильное имя пакета npm должно соответствовать:

  • Длина имени пакета должна быть больше нуля.
  • Все символы в имени пакета должны быть строчными, т.е. Не допускаются прописные или смешанные имена.
  • Имя пакета может состоять из дефис.
  • Имя пакета не должно содержать символов, не соответствующих URL-адресу (поскольку имя становится частью URL-адреса).
  • Имя пакета не должно начинаться . или _.
  • Имя пакета не должно содержать каких-либо ведущих или конечных пробелов.
  • Имя пакета не должно содержать ни одного из следующих символов: ~)('!*
  • Имя пакета не может быть таким же, как основной модуль node.js/io.js, а также имя зарезервированного/черного списка. Например, следующие имена недопустимы:
    • http
    • stream
    • node_modules
    • favicon.ico
  • Длина имени пакета не может превышать 214.

Название вашего пакета состоит из *; вот где проблема возникает.