【发布时间】:2019-12-25 19:52:44
【问题描述】:
我有一个使用 Node 用 Javascript 编写的简单 CLI 应用程序,供一个小团队内部使用。它作为 CLI 应用程序在 Linux 终端中运行。该应用程序由一个“.js”文件组成,需要几个 Node 包。我现在面临的问题是如何使用一种简单的方法将其部署到我们的内部团队,该方法适合我们保持最终用户计算机更新的日常流程。
我们的应用需要为每台工作站/笔记本电脑安装一次,并可供该计算机上的所有用户使用。任何用户都应该能够打开终端并输入命令来运行应用程序。
似乎很多人都讨论过使用 Javascript 进行 shell 编程,但是部署已完成应用程序的问题并没有被广泛讨论。我还没有找到关于这个话题的任何东西。到目前为止,我推荐了适用于开发环境或 Web 服务器的解决方案。
此应用不是网络应用,也未部署在服务器上。它需要离线运行。我也询问有关在开发工作站上开发或维护应用程序的问题。
理想情况下,安装过程应该与在/usr/local/bin 中安装一个shell 脚本并设置权限一样简单,以便计算机上所有允许的用户都可以运行它。我们正在寻找这样的安装方法:
仅将 Javascript 文件复制到每台计算机一次(复制到
$PATH上的某个位置),并确保节点包在该计算机上全局可用。我特别希望避免为每台计算机上的每个用户帐户创建
npm install。我还希望避免为每台计算机上的每个用户帐户更新节点包。
开发人员会不断更新应用程序,使其始终与最新版本的 Node 包兼容,并且部署它的所有计算机将始终安装这些包的最新版本。
here 讨论了我遇到的一个具体问题,但答案假设了一组不同的要求(例如需要“在不同的包版本上运行多个应用程序”)。
【问题讨论】:
-
对于这些要求,如果实际问题是解决 EACCESS 错误(您应该编辑问题以包含该信息),那么您应该查看所有目录的权限,并确保用户在每台计算机上管理节点包的帐户具有正确的权限。一种方法是给
/usr/local一个特殊的组,用chmod设置粘性位(请参阅man chmod),使安装帐户成为该组的成员,并且不要将sudo用于@ 987654330@. -
@dirkt - 谢谢。你的建议听起来很合适。另外,我不愿意编辑这个问题。我不想让这个问题几乎重复。
-
@dirkt - 另外,我认为您的评论将是该问题的一个很好的答案。如果你想发布它,我会接受你的回答。
-
如何使用打包解决方案来创建独立的离线可执行程序包并将其作为任何其他软件部署到您的工作站?然后,您可以在每个用户运行的每台计算机上拥有一个副本。像这样的东西:github.com/zeit/pkg 甚至是 Electron(如果你也喜欢 UI)
-
@Sohail - 感谢
pkg的链接。看起来很有趣。我已经解决了这个问题,但下次我会研究pkg。
标签: javascript node.js linux shell deployment