如何制作自更新节点包?

How to make a self-updating node package?

我们有一个 node_module bookiza,它本质上是一个命令行工具,人们可以使用 --global 标志安装它,然后使用它来在线创建和发布书籍。我们(大部分)都在关注 semver,但我预计将来会如此严格。

有没有办法让这个模块成为一个自我更新的模块?这样我们所有的客户(作者)在任何时候都使用相同版本的 bookiza(除非他们禁用自动更新)。基本上,运行 npm update [-g] bookiza 每 15 天或新版本发布时。

我应该如何实施呢?

您的用户可以通过多种方式安装命令行工具。因此不能保证 npm install -g 会正常工作,尤其是在他们的环境中。

我认为最好的办法是在开始时进行某种 "latest version" 检查。如果有新版本,警告用户,并提供自动 运行 更新命令 [Y/n].

Bower 和其他一些软件包就是这样做的。

对于那些正在寻找相同东西的人,我创建了一个模块,用于从 git 个存储库自动更新 node.js 个应用程序。它会将本地 package.json 与您的存储库中的进行比较,然后自动克隆存储库并安装依赖项。

自动 Git 更新 - https://github.com/chegele/AutoGitUpdate

import AutoGitUpdate from 'auto-git-update';

const config = {
    repository: 'https://github.com/chegele/BackupPurger'
    tempLocation: 'C:/Users/scheg/Desktop/tmp/',
    ignoreFiles: ['util/config.js'],
    executeOnComplete: 'C:\Users\scheg\Desktop\worksapce\AutoGitUpdate\startTest.bat',
    exitOnComplete: true
}

const updater = new AutoGitUpdate(config);

updater.autoUpdate();