我正在尝试为我喜欢的NPM包创建一个修复程序,Wintersmith。然而,Wintersmith应该是全局安装的(可用wintersmith <command>执行),而且我似乎无法从项目的根目录运行它,在这个项目中,我使用类似node ./node_modules/wintersmith/bin/wintersmith的git clone <my fork url>在本地手动安装它,而不会收到路径错误:
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包替换为我的forked版本,然后使用该版本执行命令,以测试我的更改是否有效。
在使用/开发全局NPM包时,是否遗漏了一些工作流程步骤?
发布于 2014-01-25 21:44:55
您应该使用npm install git:// git clone而不是
像这样安装你的fork:
npm install git://github.com/YOURNAME/wintersmith.git您也可以使用-g__将其安装为全局模块:
npm install -g git://github.com/YOURNAME/wintersmith.git发布于 2014-01-25 21:25:08
NodeJS读取环境变量NODE_PATH。除了PATH之外,您还可以使用它。
本文档更好地描述了它:http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
发布于 2014-01-25 21:32:48
我可以像这样执行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不是这样设计的。
一般来说,如果我必须处理一个没有全局安装就无法测试的节点包,我会称之为“有缺陷的”。(也许有例外,但这种例外很少见,应该在包的文档中证明它们是合理的。)
因此,通常情况下,如果我必须处理一个没有全局安装就无法运行和测试的包,我会寻找一个具有相同功能的包,它可以在没有全局安装的情况下运行,或者修复有问题的包。
https://stackoverflow.com/questions/21351080
复制相似问题