gpt4 book ai didi

node.js - 如何在 node.js 应用程序之间共享代码?

转载 作者:IT老高 更新时间:2023-10-28 21:50:47 26 4
gpt4 key购买 nike

我在 Node 中有几个应用程序,它们都共享我编写的几个模块。这些模块不能通过 npm 获得。我希望能够在应用程序之间自由共享,但我不想复制目录,也不想依赖 Git 这样做。而且我也不是很喜欢使用符号链接(symbolic link)来做到这一点。

我想安排这样的目录:

app1
server.js
node_modules
(public modules from npm needed for app1)
lib
(my own modules specific to app1)

app2
server.js
node_modules
(public modules from npm needed for app2)
lib
(my own modules specific to app2)

shared_lib
(my own modules that are used in both app1 and app2)

我看到的问题是 shared_lib 中的模块似乎对在哪里可以找到它们正在运行的应用程序的 node_modules 目录中的模块感到困惑。至少我认为这是问题所在。

那么....什么是避免重复文件的好方法? (请注意,我不关心 node_modules 中的重复项,因为这些不是我的代码,我不会将它们 checkin Git 等)

最佳答案

npm 文档建议使用 npm-link在本地创建您自己的 Node.js 包,然后将它们提供给其他 Node.js 应用程序。这是一个简单的四步过程。

一个典型的过程是首先创建一个具有以下结构的包:

  hello
| index.js
| package.json

这些文件的典型实现是:

index.js

  exports.world = function() {
return('Hello World');
}

package.json

  {
"name": "hello",
"version": "0.0.1",
"private": true,
"main": "index.js",
"dependencies": {
},
"engines": {
"node": "v0.6.x"
}
}

"private:true"确保 npm 将拒绝发布包。这是一种防止意外发布私有(private)包的方法。

接下来,导航到 Node.js 包文件夹的根目录并运行 npm link 以全局链接包,以便在其他应用程序中使用它。

要在另一个应用程序中使用这个包,例如,“hello-world”,具有以下目录结构:

 hello-world
| app.js

导航到 hello-world 文件夹并运行:

 npm link hello

现在您可以像使用任何其他 npm 包一样使用它:

app.js

  var http = require('http');
var hello = require('hello');

var server = http.createServer(function(req, res) {
res.writeHead(200);
res.end(hello.world());
});
server.listen(8080);

关于node.js - 如何在 node.js 应用程序之间共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com