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
:
Затем npm publish
для загрузки пакета в репозиторий:
npm install¶
Чтобы установить какой-либо пакет из вашего личного репозитория, укажите требуемый scope: