использовать пакет 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.
Название вашего пакета состоит из *
; вот где проблема возникает.