npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

lvs

v1.0.4

Published

a simple library for publish software version

Downloads

4

Readme

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.垃圾版本回收