来试试npm 私服(Verdaccio安装、启动、发布、下载、配置,兼容IE处理、pm2启动)

介绍

Verdaccio 是一个 Node.js创建的轻量级私有npm仓库,因其易安装、易操作、较稳定的特点,在很多开发团队中广为流传。

安装&启动(服务端)

  1. 安装:在服务端全局安装verdaccio
    npm install -g verdaccio
    
  2. 启动 verdaccio
    verdaccio
    
    output:
    在这里插入图片描述
  3. 使用pm2进程管理启动verdaccio
    npm install -g pm2
    pm2 start verdaccio
    
    output:
    在这里插入图片描述
    pm2基本操作
    pm2 start verdaccio		# 使用pm2启动应用
    pm2 list				# 查看pm2列表项,即应用状态
    pm2 logs				# 查看应用输入的日志
    pm2 monit				# 查看当前通过pm2运行的进程的状态
    pm2 describe verdaccio	# 查看应用的进程状态
    pm2 restart verdaccio	# 重启引用,用于修改配置以后重启项目
    pm2 stop verdaccio | pid		# 停止应用(以应用名或者pid都可以)
    pm2 stop all 			# 停止所有应用
    pm2 delete verdaccio | pid 		# 将应用从pm2列表中删除
    
    pm2启动参数
  • --watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不监听的目录,最好通过配置文件。
  • -i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。
  • --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如–ignore-watch=“test node_modules “some scripts””
  • -n --name:应用的名称。查看应用信息的时候可以用到。
  • -o --output <path>:标准输出日志文件的路径。
  • -e --error <path>:错误输出日志文件的路径。
  • --interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python…)。比如你用的coffee script来编写应用。

发布&下载(客户端)

  1. 客户端设置npm源
    npm config get registry # 查看当前npm源
    npm config set registry http://127.0.0.1:4873	# 将npm源设置为服务器ip+端口,默认启动端口是4873,后边讲解怎么修改端口
    
  2. 注册用户并登录
    npm adduser		# 根据提示输入用户名、密码、邮箱,进行注册
    
    在这里插入图片描述
    npm login 	# 用刚刚注册的用户名密码进行登录
    npm whoami	# 查看当前登录的账号
    

在这里插入图片描述

  1. 创建一个包

    mkdir npm-publish-test	# 包文件夹
    cd npm-publish-test
    npm init				# npm初始化
    

    接着,就可以开始开发包了,以下是几个注意点

    • 每次提交前需要在package.json中国控制好包的版本号(version)
    • 在包根目录下添加README.md,对包的使用进行说明(对同事友好一些)
    • 添加.gitignore文件,别把没用的东西传上去
    • 上传之前,最好将代码转译为es5低版本语法,不然别人引用你的包,在低端浏览器会报错
    • 当然,如果你不想转化为es5,也不是不可以,使用者可以通过babel配置转译node_modules中的包,详细操作见下文 使用者下载包并使用 -> 4.配置babel转译,兼容IE
  2. 发布包

    npm publish	
    

在这里插入图片描述

  1. 查看发布的包
    直接在浏览器中输入私服ip+端口,这里我是本地起的测试服务器,所以就是http://127.0.0.1:4873
    在这里插入图片描述
    在这里插入图片描述
    可以看到,我们项目中添加的READM.md会在这里展示,还可以看到包的依赖、版本号控制

使用者下载包并使用

  1. 使用者同样需要设置npm源为我们的私服地址,操作同上

  2. 如果verdaccio设置的权限不对所有人开放,那么使用者也需要注册并登录才能进行下载,操作同上

  3. 下载包,跟正常从npm仓库下载一样,也可以使用@指定版本号

    npm install --save npm-publish-test			# 下载最新版本
    npm install --save npm-publish-test@1.0.1	# 指定版本号下载
    

    在这里插入图片描述

  4. 配置babel转译,兼容IE,按照下面方式分别配置vue.config.jsbabel.config.js文件

    // vue.config.js
    const vueConfig = {
      // ...
      // 取消babel loader对node_modules中指定包的忽略
      transpileDependencies: [
        'npm-publish-test'	// 让babel转译我们的包
      ]
    }
    
    // babel.config.js
    module.exports = {
      // ...
      sourceType: 'unambiguous'
    }
    

    sourceType: 表明代码应该解析的模式。可以是 "script""module" 或者 "unambiguous" 中任意一个。默认为 "script""unambiguous"将使得Babylon 尝试根据ES6的import 或者export声明来进行推测。具有 ES6 importexport的文件被认为是 "module",否则被认为是 "script"

配置项(服务端)

配置文件地址~/.config/verdaccio/config.yaml
verdaccio配置官方文档
配置文件原文(这里把源英文注释去掉,然后对每个配置项用注释的方式进行介绍):

注意:

  • 配置文件中的./指的是当前配置文件所在目录,也就是~/config/verdaccio/
# 本地仓库的目录,用于存放我们上传的包和从npm服务器同步下来的包
storage: ./storage
# 插件目录的位置。对Docker/Kubernetes 基础上的配置非常有用。
plugins: ./plugins

# verdaccio启用的web应用相关配置,更多web-ui配置参考https://verdaccio.org/docs/zh-CN/webui
web:
  # web页title
  title: Verdaccio	
  # 注释掉以禁用gravatar支持
  # gravatar: false
  # 包的排序,正序/倒序 (asc|desc)
  # sort_packages: asc
  # 深色模式
  # darkMode: true

# 权限认证相关
auth:
  # 用户密码管理
  htpasswd:
    file: ./htpasswd	# 用户密码存放位置
    
    # 允许注册用户的最大值,默认1000,如果设置为-1不允许通过adduser添加用户,但是可以手动向htpasswd中添加用户
    # max_users: 1000

# 上游链路,缓存中找不到用户下载包时向上游链路请求资源
uplinks:
  npmjs:
    # 这里最好修改位淘宝镜像
    url: https://registry.npm.taobao.org/

# 包权限配置,@*/*scope包和**普通包的配置
packages:
  # 1. $all 所有用户
  # 2. $authenticated 表示只有通过验证的人(已注册)可以执行对应操作,注意,任何人都可以去注册账户。
  # 3. 或者也可以指定对应于之前我们配置的用户表 htpasswd 中的一个或多个用户,用空格分开即可
  # 4. $anonymous 表示只有匿名者可以进行对应操作(通常无用)
  
  # scoped包
  '@*/*':
    access: $all				# 访问权限,
    publish: $authenticated		# 发布权限
    unpublish: $authenticated	# 取消发布权限
    proxy: npmjs				# 如果请求的包不在服务器中,向配置的上游npmjs请求包

  # 普通包
  '**':
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs

# 服务器相关配置
server:
  keepAliveTimeout: 60		# 超时时间

# 中间件配置
middlewares:
  # npm 审核认证
  audit:
    enabled: true

# 输出日志配置
logs:
  # type: stdout --- 控制台输出; file --- 输出到文件
  # path: 如果输出到文件类型,需要制定输出路径
  # format: 输出格式 [pretty, pretty-timestamped]
  # level: 日志级别	[fatal, error, warn, http, info, debug, trace]
  
  - { type: stdout, format: pretty, level: http }
  # - {type: file, path: verdaccio.log, level: info}

Q&A

  • 下载包超时,报错404或500
    确保服务器的网络连接和配置文件中对下载包的权限问题;
    如果还有问题,可以上storage中找到对应包,把它删掉,如果是自己发布的包,需要重新上传
    最终解决办法清理缓存(慎用!):
cd ~/.config/verdaccio
rm -rf ./storage			# 注意!!!!会将自己上传所有包都删除掉,确保已经上传的包在手里有备份
  • 修改配置文件不生效
    配置文件位置没找对,要么在/root/.config/verdaccio中,要么在/home下你用户目录中的.config/verdaccio目录中
  • 发布的包不能兼容IE
    见上文:使用者下载包并使用 第四条
  • 使用pm2启动的verdaccio,我们看不到控制台的输出了
    办法1: 将日志按照级别输出到文件中,上边配置文件讲解中可以配置
    办法2:使用下面命令实时查看应用输出
    pm2 logs
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值