首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npm安装包作为主项目,而不是依赖项

npm安装包作为主项目,而不是依赖项
EN

Stack Overflow用户
提问于 2020-01-21 07:00:14
回答 2查看 134关注 0票数 3

我正在使用npm+node编写一些简单的脚本。最小示例:我有一个节点项目目录(我在其中运行npm init),其中包含script.jspackage(-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中报告了类似的错误。

那么,实现目标的正确方法是什么呢?主要是关于将其作为主项目安装的第一部分,而不是依赖项,同时保持更新到新版本的能力。

EN

回答 2

Stack Overflow用户

发布于 2020-02-11 03:01:46

一种可能的解决方案是创建节点供电的cli工具。

这是一个关于如何在node中构建cli工具的教程。您最终将全局安装该工具,并且它将作为二进制文件从您的cli中可用。

https://www.twilio.com/blog/how-to-build-a-cli-with-node-js

票数 0
EN

Stack Overflow用户

发布于 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 scripts docs

除了外壳的预先存在的路径之外,npm run还会将node_modules/.bin添加到提供给脚本的路径中。本地安装的依赖项提供的任何二进制文件都可以在没有node_modules/.bin前缀的情况下使用。

这意味着您不必全局安装该包,并且可以将其保留为项目的本地依赖项,您可以使用npm update对其进行更新。(如果仅在开发过程中使用,请将其作为dev-dependency安装。)

关于你的第二期,我不确定如何复制它,我建议打开第二个问题来具体询问它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59831999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档