NodeJs 专有库和扩展
Posted
技术标签:
【中文标题】NodeJs 专有库和扩展【英文标题】:NodeJs proprietary lib and extensions 【发布时间】:2017-02-07 20:40:34 【问题描述】:我是一名经验丰富的 C# 开发人员。我一直在自学nodejs等。我试图找到一些关于代码重用的信息。但是,我一直在搜索,但没有找到有关重用我正在寻找的代码的信息...有人可以指出我要查找的正确位置吗?
在 c# 中,我可以编写一个库,然后可以共享并重用它来构建其他应用程序。我找到的所有文档都谈到了将代码发布到 git 存储库,然后使用 npm 将其拉下。是复制/粘贴代码文件的唯一其他方式吗?我敢肯定有些公司拥有专有代码,他们是如何解决这个问题的?他们只是不使用 nodejs 吗?
感谢您的宝贵时间
更新/编辑: 我尝试在 package.json 中添加文件路径,如下所示:
"name": "starter",
"version": "1.0.0",
"dependencies":
"@angular/common": "^2.4.6",
"@angular/core": "^2.4.6",
"bower": "^1.8.0",
"rxjs": "^5.1.0",
"typescript": "^2.1.5",
"zone.js": "^0.7.6",
"SimpleTest" : "file:///C:\\me\\Code\\nodecommon",
让这个工作。诀窍是我必须使公共代码成为节点包。 这将复制或更新我的文件夹。
【问题讨论】:
使用节点模块。将共享代码放在一个模块中,然后您就可以在很多项目中使用它。可以通过多种不同的方式共享模块,从仅通过公共目录层次结构共享到通过本地 NPM 存储库共享,再到通过公共 NPM 存储库共享以及许多其他方式。关键是将你的共享代码设计成节点模块。 查看 NPM 私有模块:docs.npmjs.com/private-modules/intro 更多关于私有模块的信息:can you host a private repository for your organization to use with npm?, 学习 NPM。如果您使用私有存储库,那么部署只是意味着从 NPM 拉取主应用程序模块,然后如果该模块设置正确,它将获取所有依赖项并将它们放在适当的位置。这就是 NPM 背后的全部理念。它管理依赖关系的层次结构,因此您只需拉出您想要的主模块,它就会为您拉出所有指定的依赖模块到您的本地位置。当然,您可以发明自己的方案,只需复制目录层次结构或将内容打包到 zip/jar 中并解压缩到本地位置 npm 文档真的很棒。键入npm help json
(或访问this page)以了解访问本地或远程安装的软件包的所有不同方式。你会发现告诉 npm 使用你的本地包副本而不是远程包非常容易(剧透:npm link
)。
【参考方案1】:
本回答由本帖所有cmets共同编译。我不应该为此获得荣誉。感谢 @jfriend00 和 @Jordan 的 cmets。希望这对将来的其他人有所帮助。
-
托管 NPM 私有模块:我喜欢这方面的一切,但如果我需要更改我的一个常用模块,我不能真正脱机工作。此外,除非我将其开源,否则我会每月订阅一次。
NPM 似乎支持 package.json 中的文件路径配置。您可以指定 ../../some_package 作为您的配置。我需要自己创建一个模块来尝试一下,看看它是如何工作的。但是,如果这会自动更新并将最新的复制到我当前的项目中,那么这就是我正在寻找的。最终,我可能可以将此配置指向项目符号 1 中我的私有模块位置并离线工作。
NPM 链接。我读了一点。但是需要更多地研究它才能更好地理解它是如何工作的。但从我目前阅读的内容来看,它具有一定的潜力。
编辑: 让它适用于项目符号 2。感谢所有 cmets 的所有帮助。
【讨论】:
4.任何 git 存储库,无论是公共的还是私有的(假设它有一个package.json
)。 5.你自己的私有npm注册表:docs.npmjs.com/misc/registry#can-i-run-my-own-private-registry【参考方案2】:
Modules 是 node js 中代码复用的机制,red more here。
有 npm 和 yarn 包管理器来帮助你管理你的代码依赖。尽管没有什么能阻止您手动将代码复制到项目中,然后在代码中需要它。
将模块保存在“node_modules”文件夹中的唯一好处是,您可以只通过包名称来获取它们,而无需完整路径。 Node 会先查看本地 node_modules,然后再查看全局 node_modules,如果找不到包则失败。
【讨论】:
以上是关于NodeJs 专有库和扩展的主要内容,如果未能解决你的问题,请参考以下文章
如何将用户名从php会话存储到nodejs中的socket.io库和页面刷新时套接字连接断开。为啥?