什么是 npm 包?
npm (short for Node Package Manager) 是 Node.js 的包管理工具,可以用来安装、升级、卸载 Node.js 应用所依赖的各种模块/包/组件,同时也是发布和查找 Node.js 模块的主要平台和社区。
npm 包的本质其实就是一个包含 JavaScript 代码的压缩包,里面有一份 package.json 配置文件,记录了该包的信息和依赖关系。同时,npm 包还支持添加自定义的命令,例如一些工具库可以添加命令行工具来方便使用。
什么是 windows-services?
windows-services 是一个用于 Node.js 应用在 Windows 操作系统下注册为系统服务(System Service)的工具库,实现守护进程(Daemon)的管理和监控。
注册为系统服务后,Node.js 应用将不需要手动启动和停止,而是由系统服务管理程序自动启动和守护,仅在需要卸载或更新时(比如应用程序升级),再由服务管理程序负责完成。
windows-services 支持以下特性:
- 支持后台守护进程管理,不会出现在任务栏和托盘区,保持系统整洁。
- 支持关闭控制、暂停/继续控制、重启控制和日志记录等功能。
- 集成了基于 winlog 的系统日志记录模块,可以方便的记录系统事件和异常信息。
如何使用 windows-services?
windows-services 可以通过 npm 包管理工具安装和使用,下面是详细的安装和使用教程。
安装 windows-services
在命令行中输入以下命令来安装 windows-services:
npm install windows-services
使用 windows-services
- 第一步:编写 Node.js 应用程序
假设我们已经编写了一个 Node.js 应用程序,它的入口文件是 app.js
,具体代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - -------------- --------- --- ------------------- -- -- - ------------------- -- ------- -- ---- ------- ---
这是一个非常简单的应用程序,只是一个简单的 http 服务器。
- 第二步:添加 windows-services 配置
接下来,我们需要添加 windows-services 的配置文件,即 sample-service.json
,具体代码如下:
{ "name": "sample-service", "description": "A sample Node.js service", "script": "C:\\path\\to\\app.js", "nodeOptions": [], "env": {} }
其中,name
是服务的名称,description
是服务的描述,script
是 Node.js 应用程序的入口文件路径。
nodeOptions
是 Node.js 进程的启动参数,env
是 Node.js 应用程序的环境变量。
- 第三步:注册 windows-services
在命令行中,切换到 Node.js 应用程序的根目录下,并执行以下命令:
nssm install sample-service
这个命令将启动 windows-services 服务安装程序,并提示您填写窗体上的信息,例如“服务名称”,“Node.js 应用程序路径”,“Logon 账户”,“服务描述”,“工作目录”和“环境变量”等关键信息。
当完成配置之后,您将会看到服务管理程序已经将 Node.js 应用程序安装为一个 Windows 系统服务,您可以在系统服务列表中查找它,也可以使用 nssm
命令来操作该服务。
例如,如果您要查看该服务的状态,可以使用以下命令:
nssm status sample-service
如果您要关闭该服务,可以使用以下命令:
nssm stop sample-service
示例代码
https://github.com/coreybutler/nssm/tree/develop/sample/nodejs
总结
windows-services 是一个非常实用的 Node.js 工具库,它可以帮助我们在 Windows 操作系统下,将 Node.js 应用程序编写为系统服务,实现自动守护管理和监控。 使用 windows-services 的过程中,需要注意配置和管理的细节。 希望本文对您有所帮助,您可以自行查阅官方文档来深入了解该库的更多功能和用法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600572f581e8991b448e9192