现在我为我建立的系统获得了一个NodeJS后端。问题是我还需要为某些客户端特定需求维护后端的另一个实例,这两个实例共享70-80%的代码。目前我正在使用git分支来保持它们分开,我知道git并不打算这样做,所以我想知道是否有一些东西允许我有两个独立的项目共享一些代码库,类似于in flavour in机器人。
答案 0 :(得分:1)
这样做的选择很少:
<强> 1。通过npm
依赖项package.json
安装您自己的模块作为单独的依赖项。
package.json
npm install
安装它,与使用常规npm模块的方式相同<强> 2。使用泊坞窗。
Docker是容器虚拟化引擎,允许您使用预先安装的基础架构/文件系统创建虚拟环境的映像
你只需要在里面安装一些linux操作系统,节点和你的模块来创建图像,你所需要的就是将你的唯一代码安装为&#34;卷&#34;到了容器,就是这样。
/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 base-image-with-reusable-code node app.js
当然应该更正名称,如果您有不同的项目结构,那么更改应该反映出来。
第3。通过操作系统链接可重用代码模块文件夹
简单地说,只需从您的唯一代码项目根文件夹中ln -s /path/to/reusable/code ./resuable_code
,然后使用它,假设它位于您链接到的每个唯一项目的根目录。
<强> 4。通过npm链接
链接可重用代码模块文件夹根据@Paul的建议:
节点本机方式#3是通过npm链接,它设置符号链接并在package.json中引用它,以便您的代码可以将其视为外部模块
假设您在具有唯一代码文件夹的同一文件夹中具有可重复使用的代码文件夹:
npm link
文档的修改示例:
cd ~/projects/unique_project1 # go into the dir of your main project
npm link ../reusable_code # link the dir of your dependency
注意:所有解决方案都假设您有可重用代码的单独git项目。一般来说,这是一个很好的做法。