Node.js 我们是否可以/是否应该使用/要求“我的依赖项”中包含的node_模块';节点单元?

Node.js 我们是否可以/是否应该使用/要求“我的依赖项”中包含的node_模块';节点单元?,node.js,dependencies,dependency-management,Node.js,Dependencies,Dependency Management,场景: 假设您正在使用一个框架(如hapi)构建一个web应用程序,并且您知道当您npm安装hapi--save时,它会在其中安装几个“实用程序”(例如:,,,等等) 问题: 我们是否可以避免在项目中明确地重新安装Joi,并使用my\u app/node\u modules/hapi/node\u modules/Joi/lib/中包含的模块,例如:在myserver.js文件中: var Hapi = require('hapi'); var Joi = require('./node_mo

场景
假设您正在使用一个框架(如
hapi
)构建一个web应用程序,并且您知道当您
npm安装hapi--save
时,它会在其中安装几个“实用程序”(例如:,,,等等)

问题
我们是否可以避免在项目中明确地重新安装
Joi
,并使用
my\u app/node\u modules/hapi/node\u modules/Joi/lib/
中包含的模块,例如:在my
server.js
文件中:

var Hapi = require('hapi'); 
var Joi = require('./node_modules/hapi/node_modules/joi/lib/'); // good or bad idea? Why?

var server = new Hapi.Server();
server.connection({ port: 3000 });

server.route({
    method: 'GET',
    path: '/{name*}',
    config: {
        validate: {  // validate using Joi
          params: { 
            name: Joi.string().max(40).min(2).alphanum()
          } 
        },
        handler: function (req,reply) {
            reply('Hello '+ req.params.name + '!');
        }
    }
});

server.start(function() {
    console.log('Now Visit: http://localhost:3000/YOUR_NAME_HERE')
});
虽然不多次安装相同的
node_模块
的想法表面上看起来是合乎逻辑的,但我们想知道这样做的现实世界中的陷阱吗

明显的优点是,当您更新对
Hapi
的依赖关系时,您还将获得其
依赖关系的所有最新版本。潜在的缺点是,您不知道其中一个
依赖关系何时会发生突破性变化。。。还有什么

注意:我/我们目前没有在Node.js代码中这样做,但今天有人问我为什么不这样做?,我没有一个全面的答案。。。 “因为这是不好的做法……”不是一个好答案,我们想了解为什么。。。没有