Инструменты пользователя

Инструменты сайта


how-to:npm

NPM

npm publish

Тестировать перед публикацией, выполнить создание tgz пакета локально без самого создания файла:

npm pack --dry-run

Игнорировать файлы при публикации с помощью .npmignore или .gitignore (игнорируется при наличии .npmignore)

Указать необходимые файлы можно с помощью:

{
  "files": ["index.js", "/lib"]
}

npm cache

Очистить кэш:

npm cache clean --force

Проверить кэш:

npm cache verify

https://docs.npmjs.com/cli/commands/npm-cache

Docker

Тестировать сборку и публикацию проекта:

Dockerfile

Dockerfile

ARG NODEVER=16
FROM node:${NODEVER}-alpine
 
WORKDIR /src
 
COPY GitProjectPath .
 
ARG NPMHOST
ARG NPMAUTH
 
RUN set -ex;\
  if [ $NPMHOST ]; then npm config set registry $NPMHOST; fi;\
  if [ $NPMAUTH ]; then echo $NPMAUTH >> ~/.npmrc; fi;\
  npm config list
 
RUN set -ex;\
  npm version --no-git-tag-version --allow-same-version 1.0.0;\
  npm install;\
  npm run build;\
  npm pack --dry-run

.dockerignore

.dockerignore

.git
README.md

Запуск

Запуск

BUILDKIT_PROGRESS=plain docker build --build-arg NPMHOST=$NPMHOST --build-arg NPMAUTH=$NPMAUTH -t projectname -f Dockerfile .


Аутентификация

_authToken

Для получения токена (для каждой ноды сервера свой):

npm login --registry=https://registry.domain.com/repository/npm-group/
npm config ls

_auth

npm config set registry="https://registry.domain.com/repository/npm-group/"
npm config set _auth="$(echo -n 'username:password' | base64)"
npm config set _auth=`"$([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("username:password")))`"

.npmrc

https://docs.npmjs.com/cli/configuring-npm/npmrc

  • Windows: %userprofile%\.npmrc (powershell: $env:USERPROFILE\.npmrc )
  • Linux: $HOME/.npmrc

Распространение

Через .npmrc

Через .npmrc


Для WSL (powershell)

$NPMRC=(Get-Content "$env:USERPROFILE\.npmrc")
wsl echo "$NPMRC" `> `~/.npmrc

Для Docker

Добавить в Dockerfile:

ARG NPMRC
RUN set -ex;\
  if [ "${NPMRC}" ]; then \
    echo ${NPMRC} | sed 's/;/\n/g' > ~/.npmrc;\
  fi

и запускать/собирать с передачей аргумента

для Windows (powershell):

$NPMRC=(Get-Content "$env:USERPROFILE\.npmrc") docker build --build-arg NPMRC=$NPMRC

для Linux:

docker build --build-arg NPMRC="$(cat ~/.npmrc)"

Через переменные

Через переменные

Задать переменные: для windows (powershell)

[Environment]::SetEnvironmentVariable('NPMHOST', 'registry=https://registry.domain.net/repository/npm-group', 'User')
[Environment]::SetEnvironmentVariable('NPMAUTH', '//registry.domain.net/repository/npm-group:_auth=TOKEN','User')

для linux:

printf "\nif [ -f \"\$HOME/.npm_env\" ]; then . \"\$HOME/.npm_env\"; fi\n" >> ~/.profile
echo "export NPMHOST='registry=https://registry.domain.net/repository/npm-group'" > ~/.npm_env
echo "export NPMAUTH='//registry.domain.net/repository/npm-group:_auth=TOKEN'" >> ~/.npm_env
. $HOME/.npm_env

Для WSL (powershell)

wsl dotnet nuget add source "$env:NUGETHOST" -n IDScan.net -u "$env:NUGETUSER" -p "$env:NUGETPASS" --store-password-in-clear-text

Для docker

Добавить в Dockerfile:

ARG NPMHOST
ARG NPMAUTH
RUN set -ex;\
  if [ "${NPMHOST}" ] && [ "${NPMAUTH}" ]; then \
    echo ${NPMHOST} > ~/.npmrc;\
    echo ${NPMAUTH} >> ~/.npmrc;\
  fi

и запускать/собирать с передачей аргумента

для Windows (powershell):

--build-arg NPMHOST="$env:NPMHOST" --build-arg NPMAUTH="$env:NPMAUTH"

для Linux:

--build-arg NPMHOST="$NPMHOST" --build-arg NPMAUTH="$NPMAUTH"


Проверка

Проверить ~/.npmrc:

docker run --rm -v ~/.npmrc:/root/.npmrc:ro node:18-alpine npm i -g hello-world-npm@1.1.1 --verbose --dry-run

Ссылки

how-to/npm.txt · Последнее изменение: 127.0.0.1