gpt4 book ai didi

javascript - 对不同的 NodeJS 项目使用相同的代码库

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:09 25 4
gpt4 key购买 nike

现在我为我构建的系统提供了 NodeJS 后端。问题是我还需要维护后端的另一个实例以满足某些客户端的特定要求,这两个实例共享 70-80% 的代码。目前我正在使用 git 分支来将它们分开,我知道 git 并不意味着这样做,所以我想知道是否有什么东西可以让我有两个单独的项目共享一些代码库,类似于 Android 中的风格。

最佳答案

有几个选项可以做到这一点:

<强>1。通过 package.json 依赖项使用 npm 安装您自己的模块作为单独的依赖项。

<强>2。使用 docker 。

Docker是容器虚拟化引擎,允许您使用预安装的基础设施/文件系统创建虚拟环境的镜像

您只需构建一个内部包含一些 Linux 操作系统、预安装了 Node 和模块的镜像,您所需要做的就是将您的唯一代码作为“卷”安装到容器中,仅此而已。

  • 使用nodejs官方镜像 - 它拥有基本的node.js env所需的一切 - 创建自己的镜像。在包含 /reusable_code 文件夹和 package.json 的文件夹中创建 Dockerile 文件

Dockerfile:

 FROM node:6.9.2
RUN mkdir app
COPY ./reusable_code /app/reusable_code
COPY ./package.json /app/package.json
WORKDIR /app
RUN npm install -g <your global modules> && npm install

现在运行docker build -t base-image-with-reusable-code。

它将创建图像并将其标记为base-image-with-reusable-code

现在,一旦您想将它与任何唯一代码一起使用,您应该从代码所在的文件夹中执行此操作(假设所有唯一代码都使用上一步中使用的相同 package.json 依赖项 - 如果不是,则需要额外的步骤)

docker run -ti -v ./app.js:/app/app.js -v ./unique_code:/app/unique_code 带有可重用代码的基本镜像 Node app.js

当然名称应该更正,如果您有不同的项目结构,那么更改应该反射(reflect)这一点。

<强>3。通过操作系统链接可重用代码模块文件夹

简单地说,只需从您的唯一代码项目根文件夹中 ln -s/path/to/reusable/code ./resuable_code ,然后使用它,假设它位于您链接到的每个唯一项目的根目录下。

<强>4。通过npm链接链接可重用代码模块文件夹

按照@Paul的建议:

node native way to do #3 is via npm link, which both sets up the symlink and makes reference to it in your package.json so that your code can treat it as an external module

假设您在唯一代码文件夹所在的同一文件夹中有可重用的代码文件夹:

npm 链接文档的修改示例:

       cd ~/projects/unique_project1  # go into the dir of your main project
npm link ../reusable_code # link the dir of your dependency

注意:所有解决方案都假设您有单独的 git 项目来存放可重用代码。一般来说,这是一个很好的做法。

关于javascript - 对不同的 NodeJS 项目使用相同的代码库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42710703/

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