Skip to content

NPM

Этот репозиторий используется для хранения пакетов npm.

Используйте npm scope чтобы работать с приватным репозиторием.

LOC в примерах команд

В примерах команд следует заменить $LOC на текущую выбранную ICDC локацию.

npm login

Используйте npm login для аутентификации в приватном репозитории и постоянного хранения учетных данных в npm UserConfig файле: ~/.npmrc.

npm login --repository=https://artifactory.$LOC.icdc.io/repository/ACC_NAME-npm --scope=@EXAMPLE --always-auth
Username: USERNAME
Password: PASSWORD
Email: EMAIL 

npm config set @EXAMPLE:registry https://artifactory.$LOC.icdc.io/repository/ACC_NAME-npm

Если ваш Username содержит символ @ и у вас возникли проблемы с входом, используйте данный скрипт для входа, заменив ACC_NAME именем вашего аккаунта:

npm-login.sh

function usage() {
[ -n "$1" ] && echo "Error: $1"
echo "Usage: $(basename $0) --registry=url|hostname --scope=@orgname" 1>&2;
exit 1;
}

while getopts ":-:" o; do
case "${o}" in
    -)
    case "${OPTARG}" in
        registry) registry="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 )) ;;
        registry=*) registry=${OPTARG#*=} ;;
        scope) scope="${!OPTIND}"; OPTIND=$(( $OPTIND + 1 )) ;;
        scope=*) scope=${OPTARG#*=} ;;
    esac;;
    *) usage ;;
esac
done
shift $((OPTIND-1))

# Validate arguments
[ -z "$registry" ] && usage
is_url=$(echo "$registry" | grep -E "^https?://")
[ -z "$is_url" ] && registry="https://$registry/repository/ACC_NAME-npm"
[ -z "$scope" ] && usage
is_scope=$(echo "$scope" | grep -e "^@")
[ -z "$is_scope" ] && scope="@$scope"

# Prompt like standard 'npm login'
echo -n "Username: "; read username
echo -n "Password: "; read -s password; echo ""
is_email=$(echo "$username" | grep "@")
[ -n "$is_email" ] && email_prompt=" ($username)"
echo -n "Email${email_prompt}: "; read email
[[ -z "$email" && -n "$is_email" ]] && email=$username

login_url="$registry/-/user/org.couchdb.user:$username"
TOKEN=$(curl -g -s -H "Accept: application/json" -H "Content-Type:application/json" -X PUT --data "{\"name\": \"$username\", \"password\": \"$password\", \"email\":\"$email\"}" "$login_url" 2>&1 | awk -v RS=',"' -F: '/^token/ {print $2}' | sed 's/["}]//g')
[ -z "$TOKEN" ] && echo "npm ERR! 401 Unauthorized - PUT $login_url - Bad username or password" 1>&2 && exit 2

npm_registry=$(echo "$registry" | sed -e 's/^http[s]*://')
npm_registry=$(echo "$npm_registry" | sed -e 's/ACC_NAME-npm/ACC_NAME-npm\//g')
registry=$(echo "$registry" | sed -e 's/ACC_NAME-npm/ACC_NAME-npm\//g')
npm set "$scope:registry" "$registry"
npm set "$npm_registry:_authToken" "$TOKEN"

echo "Logged in as $username on $registry"

npm publish

Используйте npm scope для публикации пакета. Добавьте ваш scope имя в package.json:

"name": "@SCOPE/project-name"

Затем npm publish для загрузки пакета в репозиторий:

npm publish

npm install

Чтобы установить какой-либо пакет из вашего личного репозитория, укажите требуемый scope:

npm install @SCOPE/package@version