如何跨项目共享npm模块?

时间:2018-03-21 09:36:10

标签: node.js windows npm dropbox

我正在使用Windows 10 x64。 我正在使用Dropbox来保存我的所有项目,并且在dropbox文件夹中有一个'node_modules'文件夹是一个灾难。

首先,并非所有npm包都以允许this method的方式工作,因为正如第一行所述“不以'/'开头,'.. /'或' ./'“,所以我觉得这不行。

所以,我尝试制作syslink,但正如我所知,windows不允许为文件夹创建真正的硬链接,只允许文件。

我创建文件夹联结的方法是在每个项目文件夹中包含此bat文件,并以管理员身份运行。

SET dest=%~dp0node_modules
SET src=F:\work\node_modules
MKLINK /J %dest% %src%

bat文件有效,它会创建syslink,但会出现3个问题。

  1. Dropbox将其视为真实文件夹并开始同步。
  2. 该文件夹未在选择性同步中显示,以防止同步。
  3. npm由于某种原因无法使用它,当我运行'npm install'时,它会创建一个新的真正'node_modules'文件夹来替换syslink,我得到这个错误输出: error output

1 个答案:

答案 0 :(得分:0)

我不会尝试使用结点,结点很难使用,如果您不知道自己在做什么,则会导致数据丢失。

相反,您可以采用以下方法。

创建一个包含您模块路径的json配置文件:

{"modules_root": "F:/work/node_modules/"}

在您的代码中,通过在配置文件中添加路径来加载此json并需要您的模块:

var fs = require("fs");
var modules_root = JSON.parse(fs.readFileSync("modules_root.json")).modules_root;
var express = require(modules_root + "./express")

如果您决定使用本地模块,则只需将配置文件更改为:

{modules_root: "./node_modules/"}