npm包管理,搭建自己前端的私库
0前期准备
0.1 安装node环境
首先介绍一下,可以购买云服务器,也可以自己搭建一个虚机。这里我购买的是腾讯云,购买就不多说了,购买之后下过如下
之后去node官网下载node包,下载linux版
之后放到linux下面某个目录,根据个人喜好
之后进行解压
解压
tar xf node-v10.9.0-linux-x64.tar.xz
这里作为一个强迫症患者,我习惯把解压后的文件进行改名为nodejs
改名
mv node-v10.9.0-linux-x64 nodejs
下一步是配置软连接,可以理解为WIN系统下配置环境变量
配置软连接
cd到目录下
ln -s /nodejs/bin/npm /usr/local/bin/
ln -s /nodejs/bin/node /usr/local/bin/
为了方便以后下载包,我们可以下载一个cnpm
安装cnpm
npm install -g cnpm –registry=https://registry.npm.taobao.org
同样建立软连接就不多说了
0.2 下载Sinopia
npm install -g sinopia
这里也需要建立软连接
ln -s /usr/download/nodejs/lib/node_modules/sinopia/bin/sinopia /usr/local/bin/
0.3 下载pm2
npm install -g pm2
建立软连接
ln -s /download/nodejs/lib/node_modules/pm2/bin/pm2 /usr/local/bin/
1配置Sinopia
1.1 首先开通端口号
我这里用的是腾讯云,开通端口号在安全组中配置,如图所示
这里还有个坑,仅仅开通了端口号是不够的,还需要配置config.yml文件
否则还是访问不到的
1.2 配置config.yaml文件
打开config.yml文件,这个文件地址在
vim /root/.config/sinopia/config.yaml
在配置最后添加监听
listen: 0.0.0.0:4873
如图所示
config.config.yaml整体配置如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70# 库存路径,需要考虑磁盘空间
storage: ./storage
web: # 自定义web项,即浏览器访问页面
# web interface is disabled by default in 0.x, will be enabled soon in 1.x
# when all its issues will be fixed
#
# set this to `true` if you want to experiment with web ui now;
# this has a lot of issues, e.g. no auth yet, so use at your own risk
#enable: true
title: linjiad
# logo: logo.png
# template: custom.hbs
auth:
htpasswd:
# 添加用户(npm adduser)后自动创建,保存用户信息,可以初始化用户
file: ./htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
#max_users: 1000 设置为-1不能npm adduser
# a list of other known repositories we can talk to
# 可以配置多个上游地址,后面packages中的proxy指定用哪个
uplinks:
npmjs:
url: https://registry.npmjs.org/
# amount of time to wait for repository to respond
# before giving up and use the local cached copy
#timeout: 30s # 请求上游地址超时时间
# maximum time in which data is considered up to date
#
# default is 2 minutes, so server won't request the same data from
# uplink if a similar request was made less than 2 minutes ago
#maxage: 2m # 包过期时间
# if two subsequent requests fail, no further requests will be sent to
# this uplink for five minutes
#max_fails: 2 # 容许依赖请求最大失败数
#fail_timeout: 5m # 依赖请求超时时间
# 包的权限管理,$all为所有人,$authenticated为通过验证人
packages:
'@*/*': # 跟package.json中的name属性进行匹配
# scoped packages
access: $all
publish: $authenticated
'*':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish packages
# (anyone can register by default, remember?)
publish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
# log settings
logs:
- {type: stdout, format: pretty, level: http}
#- {type: file, path: sinopia.log, level: info}
# 设置监听地址,0.0.0.0匹配本机地址
listen: 0.0.0.0:4873
这时候可以访问以下看看如图所示
1.3 用pm2管理项目
为了一直启动需要安装pm2对项目进行管理
用pm2启动sinopia
pm2 start sinopia
设置开机启动
pm2 startup ubuntu # 或centos,看具体环境
保存设置
pm2 save
客户端操作
通过以上步骤服务器端基本配置完毕,下面我们修改客户端来实现从我们自己的服务器下载包
在客户端下载nrm
nrm是个方便的npm源管理工具,来做快速registry切换,当然你也可以不用下载,直接修改本地的npm下载路径即可
npm install -g nrm
查看目前的路径
nrm ls
如图所示
加入新创建的私有库地址
nrm add xgnpm http://{ip}:{port}/
切换下载地址为私有库地址
nrm use xgnpm
然后我们可以实验一下随变下载一个包
就会发现如果私有库没有这个包就会去npm下载并存在/root/.config/sinopia/sinopia里面
如果有就会直接下载
备注:添加用户可以再客户端通过命令:
npm adduser 来添加
3导言
由于上一个服务器搭建成功后发现无法下载@的包,简直是坑有木有,上网上收集了一些资料发现原来sinopia早已不更新了,大家可以看我的报错如下:简直坑有木有
4安装verdaccio
基于上一个服务器安装这里就不需要安装node等基础环境了,直接安装1安装verdaccio就可以
npm install -g verdaccio –unsafe-perm
配置软连接
ln -s /usr/download/nodejs/lib/node_modules/verdaccio/bin/verdaccio /usr/local/bin/
这里可以查看一下我们都软连接了哪些命令
cd /user/local/bin
ls
5修改verdaccio的配置
和sinopia一样你在哪个目录运行,它的就会在对应的目录下创建自己的文件。目录下默认有两个文件:config.yaml和storage,htpasswd 是添加用户之后自动创建的;
这里我和sinopia放在了一起。
配置啥的都参照sinopia这里就不多说了
之后用pm2启动就可以了。
最后更新: 2018年11月25日 17:24