【问题标题】:How to make a self-updating node package?如何制作自更新节点包?
【发布时间】:2016-02-18 15:13:31
【问题描述】:

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

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

我应该如何实现这个?

【问题讨论】:

标签: node.js npm auto-update


【解决方案1】:

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

自动 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();

【讨论】:

    【解决方案2】:

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

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

    这就是 bower 和其他一些软件包所做的。

    【讨论】:

    • > 开始时进行某种“最新版本”检查。那是正确的。 “终端应用程序”的启动,例如 zsh 或 bower。我正在查看 bower 会锁定什么事件……以及该事件是否在 linux、windows 和 mac 上跨平台触发。谢谢!
    猜你喜欢
    • 2023-02-22
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多