Node.js 用于多个项目的单节点\u模块文件夹

Node.js 用于多个项目的单节点\u模块文件夹,node.js,gruntjs,Node.js,Gruntjs,我有一个这样的网站列表: project1/site project2/site project4/site ... projectN/site project1/site/gruntfile.js project1/site/package.json project1/site/node_modules/ ... projectN/site/gruntfile.js projectN/site/package.json projectN/site/node_modules/ 每个站点文件夹

我有一个这样的网站列表:

project1/site
project2/site
project4/site
...
projectN/site
project1/site/gruntfile.js
project1/site/package.json
project1/site/node_modules/
...
projectN/site/gruntfile.js
projectN/site/package.json
projectN/site/node_modules/
每个
站点
文件夹中都有
节点模块
文件夹、
grunfile.js
文件和一个
package.json
文件。所以它们看起来像这样:

project1/site
project2/site
project4/site
...
projectN/site
project1/site/gruntfile.js
project1/site/package.json
project1/site/node_modules/
...
projectN/site/gruntfile.js
projectN/site/package.json
projectN/site/node_modules/
我的任务、插件和其他东西一切正常

我想知道,我的网站正在使用类似的任务,我是否可以只使用根文件夹上的一个节点模块来解决这个问题

project1/site/
project2/site/
...
projectN/site/
/node_modules/

这可能吗?我需要做什么?

您可以使用带有
npm
-g
标志来全局安装模块,如下所示:
npm安装-g
这将安装所有模块,以便所有节点项目都可以访问这些模块

然后,您可以使用
npm link
为每个项目创建指向所需模块的链接,如链接@jakerella中所述:

…在某些情况下,您希望同时执行这两种操作。咖啡脚本和 Express都是具有命令行的应用程序的好例子 接口,以及一个库。在这些情况下,您可以执行以下操作之一: 以下:

  • 全局安装,然后是npm链接咖啡脚本或npm链接 express(如果您所在的平台支持符号链接),然后 只需更新全局副本即可将所有符号链接更新为 嗯

  • 请参阅。

    require
    自动进入目录,直到它找到包含所需模块的
    节点\u modules
    目录,这样就可以工作了。您对
    package.json
    文件的计划是什么?您仍然希望它们分开,还是合并?正如@AaronDufour所说,我建议您在父“项目”目录中存储所有内容。不幸的是,如果不使用全局标志,没有其他方法可以在项目之间共享节点模块依赖关系,也就是说,对于我的
    package.son
    文件没有特殊的计划。我只是在我的
    gruntfile.js
    中为每个项目使用稍微不同的任务(例如:一个项目使用Sass,另一个项目使用更少的Sass等等)。这是因为有些项目要么是老项目,要么是其他人一直在做这些项目。但总的来说,他们有着相似的任务。这是不建议的,因为这样你就没有办法将安装的模块绑定到项目中。
    package.json
    文件不能与全局标志(
    -g
    )结合使用。“就像全局变量是一种总量,但在某些情况下也是必要的,全局包很重要,但如果不需要的话最好避免。”@jakerella,同样的npm博客页面提到了OP的潜在解决方案-使用
    npm链接
    -相应地更新了我的答案。考虑到OP的要求,这可能并不漂亮,但肯定是一个可行的解决方案,即使您不同意它…删除了-1作为额外的解释,尽管我仍然不同意全局安装作为解决方案。感谢您抽出时间更新您的答案!