用户工具

站点工具


frontend:npm

NPM

NPMNode.js的包管理器。

Common

npm包版本规则

Command

常用指令如下

version

bump version of project[(After those commands, npm will auto increase the number of package.json's version field and add a git tag which same as npm version)]:

npm version --help
# npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
 
npm version major  # v1.0.0 => v2.0.0
npm version minor  # v1.0.0 => v1.1.0
npm version patch  # v1.0.0 => v1.0.1

Trick

中国大陆内加速

使用使用淘宝npm registery加速npm packages下载:

~/.npmrc
phantomjs_cdnurl=https://cnpmjs.org/downloads
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
registry=https://registry.npm.taobao.org
chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
electron_mirror=https://npm.taobao.org/mirrors/electron/

或者

npm config set registry https://registry.npm.taobao.org
npm config set phantomjs_cdnurl https://cnpmjs.org/downloads
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
npm config set chromedriver_cdnurl https://npm.taobao.org/mirrors/chromedriver
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/

或者像这样直接使用:

PHANTOMJS_CDNURL=https://cnpmjs.org/downloads [...more variables] npm install

如果是在 sudo 执行 npm install ,记得把 .npmrc 复制到 /root/.npmrc 噢!

私有 Registry

Installation

安装 verdaccio 来存放私有 npm packages,verdaccio 的优势是简单易安装,仅需几行代码即可安装完成。

mkdir private-npm && cd private-npm
npm init -y
npm install --save verdaccio
pm2 start -i 2 --name private-npm ./node_modules/.bin/verdaccio  # or ./node_modules/.bin/verdaccio

可选配置:

config.yml
auth:
  htpasswd:
    max_users: -1   # 关闭注册

packages:
  '@YOUR_CUSTOM_SCOPED_NAME/*':  # 配置自定的 scoped package 走该 Registry
    access: $all
    publish: $authenticated
    proxy: npmjs

listen:
  - 0.0.0.0:4873     # 监听在公网

Usage

私有 Registry 的使用策略有几种。

第一种是全量同步自 NPM Registry,此方案仅适用于搭建公共的 Registry 镜像服务。

第二种是仅同步使用过的 npm pacakges。

第三种是私有的包通过 @scoped/packageName 这种包名走搭建的私有的 Registry,公共的 packages 仍然走 NPM Registry。

从方便和可靠性考虑,我们在此使用第三种方案。

步骤如下:

1. 注册私有 Registry 用户

npm adduser --registry 

2. 登录私有 Registry ,并指定某个 @scopeName 包通过某个 Registry

npm login --registry http://[[ip]]:4873 --scope=@scopeName

3. 提交某个包到私有的 Registry:

package.json
{
  "name": "@scopeName/packageName"
}

在步骤二我们已经设置了 @scopeName 前缀的包都通过我们自行搭建的 Registry 下载/提交,所以仅需 npm publish 即可

frontend/npm.txt · 最后更改: 2023/12/03 10:24 由 127.0.0.1