我正在使用npm+node编写一些简单的脚本。最小示例:我有一个节点项目目录(我在其中运行npm init),其中包含script.js、package(-lock)?.json和带有依赖项的node_modules目录。我从cmdline node "C:/path-to-project/script.js"运行的这个脚本。
我想在两台计算机之间共享此脚本。我决定使用npm并将我的脚本发布到注册表。
问题:
MAIN)在另一台计算机上安装包,将其及其依赖项放入node_modules中,因此不能像在原始计算机上那样从主项目目录中使用。下载带有npm-pack的包将得到所需的目录结构,但不再具有npm-update主项目的功能(= script.js)。
第二)我使用的是本地依赖项,它被添加为指向node_modules的链接。我想将它作为本地链接保留在原始计算机上,但在第二台计算机上从注册表安装它。依赖关系也会发布,但当在第二台pc上安装时,npm会失败,并显示Could not install from "node_modules\utils" as it does not contain a package.json file.包的作用域,因此没有命名冲突,并且在https://github.com/npm/npm/issues/18266中报告了类似的错误。
那么,实现目标的正确方法是什么呢?主要是关于将其作为主项目安装的第一部分,而不是依赖项,同时保持更新到新版本的能力。
发布于 2020-02-11 03:01:46
一种可能的解决方案是创建节点供电的cli工具。
这是一个关于如何在node中构建cli工具的教程。您最终将全局安装该工具,并且它将作为二进制文件从您的cli中可用。
发布于 2020-02-13 10:16:23
发布为可执行CLI
使用bin option enabled in package.json发布包。您将需要bin选项来指向一个脚本,该脚本具有用于节点的shebang,该脚本具有exec权限,并运行项目。
这将允许您将包作为可执行文件运行。
在本地安装软件包并使用npm脚本运行
然后,您可以使用npm i将包作为本地依赖项安装到另一个项目中,并创建一个npm脚本以将包作为脚本运行。NPM脚本不仅可以查看您的$PATH,还可以查看本地项目的node_modules/.bin (如果您指定了要运行的命令的名称)。因此,在npm脚本中,它将找到包的名称(或者设置bin条目时使用的命令名)。
除了外壳的预先存在的路径之外,npm run还会将node_modules/.bin添加到提供给脚本的路径中。本地安装的依赖项提供的任何二进制文件都可以在没有node_modules/.bin前缀的情况下使用。
这意味着您不必全局安装该包,并且可以将其保留为项目的本地依赖项,您可以使用npm update对其进行更新。(如果仅在开发过程中使用,请将其作为dev-dependency安装。)
关于你的第二期,我不确定如何复制它,我建议打开第二个问题来具体询问它。
https://stackoverflow.com/questions/59831999
复制相似问题