【问题标题】:How do you fork and develop a globally installed Node.js NPM package?你如何 fork 和开发一个全局安装的 Node.js NPM 包?
【发布时间】:2014-01-25 23:20:00
【问题描述】:

我正在尝试为我喜欢的 NPM 包创建一个修复程序,Wintersmith。但是,Wintersmith 应该是全局安装的(可以使用 wintersmith <command> 执行),我似乎无法从项目的根目录运行它,我使用 git clone <my fork url> 在本地手动安装了它,而没有收到类似 node ./node_modules/wintersmith/bin/wintersmith 的东西路径错误:

module.js:340
throw err;
      ^
Error: Cannot find module '../lib/cli/'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (F:\web\wintersmith\node_modules\bin\wintersmith:3:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

我认为正确开发和测试此功能的唯一方法是手动将全局安装的 Wintersmith 包替换为我的分叉版本,然后使用该版本执行命令以测试我的更改是否有效。

在使用/开发全局 NPM 包时,我是否缺少某些工作流程步骤?

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    您应该使用npm install git:// 而不是git clone

    像这样安装你的 fork:

    npm install git://github.com/YOURNAME/wintersmith.git
    

    您也可以将其安装为全局模块使用-g:

    npm install -g git://github.com/YOURNAME/wintersmith.git
    

    【讨论】:

      【解决方案2】:

      NodeJS 使用环境变量 NODE_PATH。除了PATH,您还可以使用它。

      本文档更好地描述了它: http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

      【讨论】:

        【解决方案3】:

        我可以像这样执行 Wintersmith,而无需全局安装:

        $ git clone https://github.com/jnordberg/wintersmith.git
        $ cd wintersmith
        $ npm install               # This installs all dependencies I need for the next step.
        $ npm run-script prepublish # Run the prepublish script which compiles sources to ./lib
        $ bin/wintersmith
        

        当没有任何东西作为参数传递时,我会收到它给出的使用消息。

        当创建一个旨在全局安装的节点包时,可以希望对其进行设计,使其无需安装即可运行和测试。我很惊讶 Wintersmith 不会这样设计。

        一般来说,如果我必须处理一个不全局安装就无法测试的节点包,我会称之为“有缺陷的”。 (也许有例外,但这种例外很少见,应该在包的文档中说明它们的合理性。)

        所以,一般来说,如果我必须处理一个无法在不全局安装的情况下运行和测试的包,我会寻找一个提供等效功能的包,可以在不安装的情况下运行全局,或者修复有问题的包。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-13
          • 1970-01-01
          • 1970-01-01
          • 2019-04-13
          • 2017-11-05
          • 2020-10-23
          • 1970-01-01
          • 2016-06-21
          相关资源
          最近更新 更多