node.js - 如何跨项目共享 npm 模块?

标签 node.js windows npm dropbox

我使用的是 Windows 10 x64。 我使用 dropbox 来保存所有项目,而在 dropbox 文件夹中包含“node_modules”文件夹是一场灾难。

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

因此,我尝试创建 syslink,但正如我所发现的,Windows 不允许为文件夹创建真正的硬链接(hard link),只能为文件创建真正的硬链接(hard link)。

我创建文件夹连接的方法是在每个项目文件夹中包含此 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

最佳答案

我不会尝试使用联结,它们很难使用,并且如果您不知道自己在做什么,可能会导致数据丢失。

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

创建一个包含模块路径的 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/"}

关于node.js - 如何跨项目共享 npm 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49402684/

相关文章:

windows - SetWindowPlacement 不移动某些窗口

windows - 从另一个线程调用 OpenGL 函数

java - npm安装java : error MSB4019: The imported project "D:\Microsoft.Cpp.Default.props" was not found

node.js - 如何在安装时直接执行 'npm link'

javascript - 这段代码在 ES6 中的转置是什么?

node.js - FindOne 与 MongooseJS 然后提前存储结果?

javascript - 从nodejs服务器端进行ajax调用

node.js - 如何在 lambda Nodejs 中处理异步调用

.net - 如何通过 .NET 更改高级打印首选项?

docker - 未能加载缓存键 : pull access denied powershell