我有一个使用Node用Javascript编写的简单CLI应用程序,供小团队内部使用。它作为CLI应用程序在Linux终端中运行。该应用程序由单个“ .js”文件组成,并需要一些Node软件包。我现在面临的问题是如何使用一种简单的方法将其部署到我们的内部团队,该方法适合我们保持最终用户计算机更新的常规过程。

我们的应用程序需要为每个工作站/笔记本电脑安装一次,并可供该计算机上的所有用户使用。任何用户都应该能够打开终端并输入命令来运行该应用程序。

似乎很多人都在讨论使用Javascript进行Shell编程,但是没有广泛讨论部署完整应用程序的问题。我没有找到关于该主题的任何内容。到目前为止,已经为我推荐了适合于开发环境或Web服务器的解决方案。

此应用不是网络应用,并且未部署在服务器上。它需要脱机运行。我也没有问有关在开发工作站上开发或维护应用程序的问题。

理想情况下,安装过程应与在/usr/local/bin中安装Shell脚本并设置权限一样简单,以便计算机上所有允许的用户都可以运行它。我们正在寻找这样的安装方法:


将Javascript文件仅复制一次到每台计算机(到$PATH上的某个位置),并确保Node软件包在该计算机上全局可用。
我特别希望避免对每台计算机上的每个用户帐户执行npm install
我还希望避免必须为每台计算机上的每个用户帐户更新Node包。


开发人员将保持该应用程序的更新,使其始终与最新版本的Node软件包兼容,并且部署在其上的所有计算机将始终安装这些软件包的最新版本。

我遇到的一个具体问题在here中进行了讨论,但是答案假定了一组不同的要求(例如,需要“在不同软件包版本上运行的多个应用程序”)。

最佳答案

对于这些要求,如果实际问题正在解决EACCESS错误(应编辑问题以包括该信息),则应查看所有目录的权限,并确保管理每台计算机上的节点程序包的用户帐户具有正确的权限。

一种方法是给/usr/local一个特殊的组,用chmod设置粘性位(请参见man chmod),然后在现有树上使用chgrp -R

然后,使安装帐户成为该组的成员,并且不要将sudo用作npm install -g

(永远不要使用sudo来安装到/usr/local中,这具有额外的优势,即您不会在其他地方意外安装某些东西,例如,因为未在此本地软件包源中正确设置路径。)

09-25 19:45
查看更多