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