【问题标题】:Requiring node modules locally在本地需要节点模块
【发布时间】:2020-08-06 01:16:24
【问题描述】:

使用已在 NPM 上注册的模块时,包含它们的过程很简单:运行 npm install <package> 然后添加 var package = require('<package>')

但是,在我自己的模块上工作时,我不确定“设置”的方式。我还没准备好发布到 NPM,但我确实想以与前面所述相同的方式 require 模块。

因此,我完成了以下步骤:

  1. node_moduels 目录中为我的模块创建了一个子目录
  2. 在这个新目录中添加了一个 package.json 文件(通过 npm init)
  3. package.json 文件中包含dependencies 部分

这是在本地使用节点模块的正确方法吗?

另外,当我运行 npm install 时,我的模块的 package.json 文件中似乎没有检测到依赖项 - 我认为这是我处理事情的方式的问题?

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    我不建议将它放在node_modules 目录中。此文件夹应从您的源代码管理中排除。

    这是一个最小的端到端示例。

    将此文件放在您喜欢的任何位置。我建议在您的目录结构中添加一个“lib”文件夹

    myModule.js

    module.exports = function(callback){
        return callback("hello there");
    }; 
    

    然后,无论你想在哪里使用它:

    app.js

    var myModule = require('./lib/myModule');
    
    myModule.sayHello(function(hello) {
        console.log(hello);
    });
    

    现在,如果您运行 node app.js,您的控制台输出将是:

    你好

    随着 myModule 的增长,您可以将其重构为一组单独的文件,为其创建 package.json,并将其发布到 NPM

    编辑

    根据您的评论,这似乎是您想要的

    Local dependency in package.json

    因此,基于此,连同我们上面的示例,编辑您的package.json 如下

    {
      "dependencies": {
        "myModule": "file:../lib/myModule"
      }
    }
    

    那么你可以require为:

    var myModule = require('myModule');
    

    如果 / 当您将 myModule 发布到 npm 时,您只需更改您的 package.json

    另一个编辑

    作为另一种选择,您可以在 package.json 中指定 git url,而无需发布到 NPM

    Use Git dependencies with npm and Node on Heroku

    【讨论】:

    • 谢谢 - 但现在每次我想从模块的本地版本切换到最终可能添加到 NPM 的模块时,我都需要更改需求路径
    • 基本上 - 我想以与从 NPM 中提取模块相同的方式包含我的模块。
    • 没看到 - 会看看
    • 所以你仍然会按照你原来的建议去把模块放在node_modules之外。
    • 还有n​​pm链接,可能也是你想要的
    【解决方案2】:

    这就像执行以下操作一样简单:

    1. 在您(未发布的)模块的根目录中执行npm link
    2. 在需要未发布模块的模块的根目录中执行npm link UNPUBLISHED_MODULE_NAME

    瞧!

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 1970-01-01
      • 2017-09-11
      • 2018-08-22
      • 2016-06-01
      • 2021-10-14
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多