1.0.4 • Published 1 year ago

lvs v1.0.4

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

lvs 是一个用来简单的管理项目发布的工具。纯手工化的发布流程中,我们有很多方式去将打包后的代码发布到服务器上,比如通过ftp,通过rsync等等,又或者在服务器上直接拉取源代码之后进行编译打包。

这里提供了一种新的方式,创建一个软件包管理服务,然后通过命令行的方式,将打包后的文件夹发布到软件包管理服务上,然后通过命令行的方式,将对应的软件包拉取到服务器上。

下面介绍一下具体的使用方式。

1.安装

npm install -g lvs

2. 创建软件包管理服务

lvs start

这个命令表示在当前目录下创建一个软件包管理服务,端口号为11111。

你会发现当前目录下多了一个文件lvs-server.json,文件内容如下:

{
  "port": 11111,
  "dir": "/home/xie/code-work-space/js/lvs",
  "projects": {}
}

其中port表示服务的端口号,dir表示软件包管理服务的根目录,projects表示项目列表。

实际上start的命令的执行流程是这样的:

  1. 从命令行中获取参数portdir的值。
  2. 从命令行中获取参数cfg的值(如果没有指定,则默认值为lvs-server.json),该值表示配置文件的路径, 然后读取配置文件的内容,如果配置文件不存在,那么返回一个空的配置项目{}
  3. 将命令行中的参数的值与配置文件中的值合并,如果有冲突,以命令行中的参数为准。如果都没有配置portdir ,那么使用默认值(11111.)。
  4. 将合并后的配置写入到指定的配置文件中。
  5. 启动软件包管理服务。

所以直接使用lvs start命令,就可以创建一个默认的软件包管理服务,并生成了配置文件lvs-server.json

当然你也可以指定配置去生成:

lvs start --port 22222 --dir /home/xie/code-work-space/js/lvs --cfg /home/xie/code-work-space/js/lvs/lvs-server.json

最终这些参数会写入到/home/xie/code-work-space/js/lvs/lvs-server.json中。并且下一次启动的时候,命令可以简化成:

lvs start --cfg /home/xie/code-work-space/js/lvs/lvs-server.json

或者,当你在/home/xie/code-work-space/js/lvs目录下的时候,命令可以精简到最后一步:

lvs start

最后,命令是阻塞式的,所以你可以使用nohup命令来后台启动:

nohup lvs start >/dev/null 2>&1 &

如果需要停止服务,可以找到对应的进程,然后kill掉就可以了。当然我们也提供了一个停止服务的命令:

lvs stop

这个命令会寻找当前目录下的lvs-server.json文件,从中读取端口号,然后关闭对应的服务。

也可以使用cfg参数指定配置文件:

lvs stop --cfg /home/xie/code-work-space/js/lvs/lvs-server.json

或者使用port参数直接指定端口号,程序就不会去读取配置文件了:

lvs stop --port 11111

3. 创建项目

软件包管理服务不允许匿名用户上传不受管理的文件夹,所以我们需要在配置文件中进行相关的配置。打开对应的配置文件如lvs-server.json ,添加一个项目:

{
  "port": 11111,
  "dir": "/home/xie/code-work-space/js/lvs",
  "projects": {
    "test-project": {
      "r": "test-user-1",
      "w": "test-user-2",
      "rw": "test-user-3"
    }
  }
}

上面的配置表示创建了一个名字叫做test-project的项目,该项目有三个用户,分别是test-user-1test-user-2test-user-3 。其中r表示只能获取项目文件,w表示只能上传文件,rw表示既能上传文件,又能获取文件。

当想配置多个用户的时候,可以替换成数组格式:

{
  "port": 11111,
  "dir": "/home/xie/code-work-space/js/lvs",
  "projects": {
    "test-project": {
      "r": [
        "test-user-1",
        "test-user-2"
      ],
      "w": [
        "test-user-3",
        "test-user-4"
      ],
      "rw": "test-user-5"
    }
  }
}

4. 上传软件包

服务器的环境配置完成之后,我们就可以在其他的机器上上传打包后的软件包了。首先我们需要安装lvs到对应的机器上:

npm install -g lvs

然后将我们的软件包上传到服务器上,比如前端的项目文件夹一般是dist文件夹,我们可以将dist文件夹上传到服务器上:

lvs push --server 192.168.3.143 --port 11111 --dir dist --project test-project --version 20241901 --auth test-user-3
  • --server表示服务器的ip地址
  • --port表示服务器的端口号
  • --dir表示要上传的文件夹
  • --project表示要上传到的项目
  • --version表示要上传的版本号
  • --auth表示上传的用户

与服务端的命令一致,都会将对应的参数自动写入到配置文件中,所以下次上传的时候,可以简化成:

lvs push

需要注意的是,不允许上传重复的版本号,如果上传的版本号已经存在,那么会提示错误。

5. 拉取软件包

当我们需要在服务器上拉取对应的软件包的时候,我们可以使用lvs pull命令:

lvs push --server 192.168.3.143 --port 11111 --dir . --project test-project --version 20241901 --auth test-user-4
  • --server表示服务器的ip地址
  • --port表示服务器的端口号
  • --dir表示要拉取到的文件夹
  • --project表示要拉取的项目
  • --version表示要拉取的版本号
  • --auth表示拉取的用户

todo: 1.处理无版本的情况 2.美化输出 3.命令创建用户以及项目 4.强制覆盖版本 5.垃圾版本回收

1.0.4

1 year ago