Используйте verdaccio для создания частного репозитория npm.
Предыстория требований: обычно в работе над проектом может использоваться много общего кода, такого как классы фреймворка, классы инструментов, общедоступные коды бизнес-логики и т. д., которые упаковываются и выпускаются в центральный репозиторий npm или частный репозиторий для обслуживания и хостинг.Код, для облегчения использования общедоступного кода, если он включает компоненты кода, которые неудобно выставлять напоказ, их можно публиковать в приватных репозиториях.
Преимущества частных библиотек компонентов npm:
- Частные пакеты npm открыты только для внутренней локальной сети компании.
- Скорость выше, чем при загрузке пакета напрямую из npm, а также быстрее, чем при использовании зеркала Taobao, ведь оно находится во внутренней локальной сети компании.
- Управление разрешениями можно настроить для публикации и загрузки пакетов npm.
При исследовании и создании частных хранилищ компонентов npm я проверил много важной информации.Некоторые используют инструмент частного сервера nexus для управления пакетами maven для создания частных хранилищ, некоторые используют cnpm Али для создания частных хранилищ, а некоторые используют sinopia и verdaccio для создания частные склады, вот основные отличия между ними:
- Используйте нексус инструмента частного сервера для управления пакетами maven для создания частного хранилища., этот метод является мощным, но он более склонен к использованию в фоновом режиме. Студенты на стороне сервера должны быть более знакомы с ним.
- Cnpm Али строит частный склад npm, это также используется внутри Ali, и оно должно быть очень простым в использовании, но необходимо установить базу данных MySQL, а конфигурация более проблематична.
- Используйте sinopia для создания частного репозитория npm., это относительно просто в использовании, и нет необходимости настраивать базу данных, но этот проект github, похоже, не поддерживается в течение трех или четырех лет.
После проверки соответствующей информации и сравнения я, наконец, решил использовать verdaccio для создания частного репозитория npm.Этот проект github кажется ответвлением sinopia, и его использование похоже на sinopia.
Настройка сервера
1. Установить узел
Verdaccio is a lightweight private npm proxy registry built in Node.js
verdaccio основан на node.js, поэтому нам нужно установить узел на наш сервер.Как установить узел на сервере Alibaba Cloud, подробности см. в моем предыдущем блоге.Разверните узел + mongodb на облачном сервере Alibaba.
2. Установите Вердаччо
npm install -g verdaccio --unsafe-perm
плюс--unsafe-permвариант - предотвратитьgyp ERR! permission deniedО проблеме с разрешением сообщается следующим образом:
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/verdaccio/node_modules/dtrace-provider/build'
gyp ERR! System Linux 3.10.0-862.14.4.el7.x86_64
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/verdaccio/node_modules/dtrace-provider
gyp ERR! node -v v8.12.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Если есть необходимость обновить npm, выполнитеnpm install -g npmдействовать
Результаты:
/usr/local/bin/verdaccio
3. Начните Verdaccio
verdaccio
Результат выполнения следующий:
Verdaccio doesn't need superuser privileges. Don't run it under root.
warn --- config file - /root/.config/verdaccio/config.yaml
warn --- Plugin successfully loaded: htpasswd
warn --- Plugin successfully loaded: audit
warn --- http address - http://localhost:4873/ - verdaccio/3.10.2
Из вывода консоли мы видим, что путь к файлу конфигурации verdaccio находится в/root/.config/verdaccio/config.yamlи адрес доступа по умолчаниюhttp://localhost:4873/, добавить в конец конфигурационного файлаlisten: 0.0.0.0:4873спасти
// 进入verdaccio目录
cd /root/.config/verdaccio/
// 查看该目录下的文件,该目录下默认有两个文件:config.yaml和storage,添加用户之后会自动创建htpasswd
ls
> config.yaml storage
// 查看配置文件
vim config.yaml
Добавьте код в конец файла конфигурации config.yaml:
# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873
вердаччо конфигурация по умолчанию,следующим образом:
storage: ./storage
auth:
htpasswd:
file: ./htpasswd
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
access: $all
publish: $authenticated
proxy: npmjs
'**':
proxy: npmjs
logs:
- {type: stdout, format: pretty, level: http}
вurlЕго можно настроить как адрес зеркала Taobao:
url: https://registry.npm.taobao.org/ //默认为npm的官网仓库地址,由于国情,修改 url 让verdaccio使用 淘宝的npm镜像地址,这样下载速度更快
См. подробную документацию по конфигурационному файлу verdaccio.
4. Используйте pm2 для запуска verdaccio, чтобы убедиться, что процесс всегда открыт
установить pm2
npm install -g pm2 --unsafe-perm
Запустите verdaccio с pm2, чтобы сохранить процесс открытым
pm2 start verdaccio
После выполнения команды результат такой, как показано на рисунке:
5. Доступ к построенному частному складу
открыть в браузереhttp://47.107.60.51:4873, если к нему можно получить доступ нормально, это означает, что сборка прошла успешно. Как показано на рисунке:
Примечание. Добавьте группу безопасности на сервер Alibaba Cloud, откройте
4873Номер порта, если группа безопасности порта не добавлена, к нему нельзя нормально получить доступ в браузереhttp://47.107.60.51:4873
Клиент (локальный) публикует npm в частный репозиторий
После использования verdaccio для создания частного хранилища на сервере следующим шагом будет загрузка пакета npm локально на сервер частного хранилища.
Перед публикацией пакетов npm необходимо зарегистрировать учетную запись.Подробности см. в блоге.Как разработать пакет npm и опубликовать его в центральном репозитории npm
1. Войти
npm adduser --registry http://47.107.60.51:4873
Введите имя пользователя, пароль и адрес электронной почты учетной записи npm следующим образом:
Username: better1025
Password:
Email: (this IS public) 924902324@qq.com
Logged in as better1025 on http://47.107.60.51:4873/.
выходLogged in as better1025 on http://47.107.60.51:4873/., указывающий на учетную запись npmbetter1025успешно вошли вhttp://47.107.60.51:4873/частный репозиторий.
2. Публикуйте пакеты npm в частных репозиториях.
npm publish --registry http://47.107.60.51:4873
После успешного релиза выглядит следующим образом:
npm notice
npm notice 📦 lld-npm-demo@1.0.2
npm notice === Tarball Contents ===
npm notice 230B package.json
npm notice 101B helloworld.js
npm notice 115B index.js
npm notice === Tarball Details ===
npm notice name: lld-npm-demo
npm notice version: 1.0.2
npm notice package size: 412 B
npm notice unpacked size: 446 B
npm notice shasum: 990fac51aaa0cac64f25da052306112b588ce792
npm notice integrity: sha512-Bl9FtXdg819Ds[...]jkTmzfbKjA9og==
npm notice total files: 3
npm notice
+ lld-npm-demo@1.0.2
Как публиковать пакеты npm и сталкиваться с ошибками, смотрите в блогеКак разработать пакет npm и опубликовать его в центральном репозитории npmНичего, мне здесь больше не надоест.
3. npm успешно опубликован в частном репозитории
Обновить в браузереhttp://47.107.60.51:4873страницу, как показано на рисунке:
4. Как использовать пакет npm для частного репозитория
Из-за ограничения внутреннего доступа к зарубежным сетям, чтобы улучшить скорость загрузки наших пакетов npm, мы обычно устанавливаем настройки в нашей обычной разработке проекта.зеркало таобао.
// 设置淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
Просмотр информации о конфигурации npm
npm config ls
При загрузке пакета npm, который мы опубликовали в частный репозиторий, вам необходимо изменить адрес репозитория.Конкретные операции заключаются в следующем:
npm set registry http://47.107.60.51:4873
После выполнения этой команды используйтеnpm install lld-npm-demoСначала команда отправится на наш собственный личный склад, чтобы загрузить пакет npm, если он не будет найден, он будет загружен с центрального хранилища npm.
Выполните команду и результат следующим образом:
Betters-iMac:privateRegistry better$ npm set registry http://47.107.60.51:4873
Betters-iMac:privateRegistry better$ npm install lld-npm-demo
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN privateregistry@1.0.0 No description
npm WARN privateregistry@1.0.0 No repository field.
+ lld-npm-demo@1.0.2
added 1 package from 1 contributor and audited 1 package in 3.083s
found 0 vulnerabilities
Наконец, рекомендуется инструмент переключения хранилища npm: для переключения адреса хранилища npm рекомендуется использовать nrm.
nrm — это инструмент управления реестром npm, который может просматривать и переключать текущий используемый реестр. Также можно не ставить, установка будет эффективнее.
npm install -g nrm
Справочная статья:
официальная документация вердаччо
Вердаччо-сборка инструмента частного сервера npm (2)
Используйте verdaccio для создания репозитория npm.
Строительство и использование частного склада NPM Sinopia
Используйте cnpm для создания частного репозитория NPM и публикации пакетов npm.
3 способа приватных модулей npm
Используйте cnpmjs.org для создания частного репозитория npm.