节点全局npm软件包,保持最新状态

时间:2019-05-12 13:38:13

标签: node.js npm

我已经通过npm发布了一个全局节点程序包,以为我公司的项目生成样板模板。

我想将当前版本与最新发布的版本进行比较,如果不是最新版本,则退出该过程。

  1. 建议您检查哪些节点库以获取最新版本。

  2. 如果检测到新版本,是否可以自动更新全局软件包。

请记住,这是我公司的内部工具,因此至关重要的是,他们正在使用最新模板创建项目,我希望它们能够自动或轻松地进行更新

1 个答案:

答案 0 :(得分:1)

个人建议

代替强迫用户升级,另一种选择是将模板(以zip格式)发布到远程静态服务器(例如S3)上。在这种情况下,您通常可以将zip更新为最新的模板,而无需升级模板生成器。

generate-template angularjs-template:latest
generate-template angularjs-template:4.3

回答您的问题

  
      
  1. 建议您检查哪些节点库以获取最新版本。
  2.   

我不确定是否有用于此的库。但是,您可以轻松构建一个。

  1. 创建一个包含包信息(例如最新的稳定版本,弃用消息等)的JSON文件。
  2. 将JSON文件上传到远程静态服务器。
  3. 只要用户运行您的程序,就下载JSON文件并检查当前的package.json
  4. Show a deprecation warning(如果用户应升级)。
  5. process.exit()应用程序,如果用户必须升级。
  
      
  1. 如果检测到新版本,是否可以自动更新全局软件包。
  2.   

我认为最好将控制权留给用户,因为可能有些原因导致他不喜欢升级。例如,如果用户有10个月前开始的一堆项目,则他可能想对较新的项目使用相同的模板。 但是,如果您真的想使其自动化,则可以使用以下代码(未测试)

const { execSync } = require('child_process');
const pkg = require('./package.json')
execSync(`npm update -g ${pkg.name}`)

process.exit()