设置node.js REPL模块path
我不知道如何添加path到我的Node.js安装(Mac OS X上的v.0.4.7)。 我安装了npm,并且全局安装到/usr/local/lib/node_modules
。 但是,当我安装npm时,它并没有通知节点select放置全局模块的位置(应该有吗?)。 现在,当我在命令行模式下使用Node时,我不能简单地require()
我全局安装的模块。 所以,我想知道是否有某种节点configuration文件或环境variables,我可以添加我的全局npm模块安装path?
我知道我可以将它添加到require.paths
数组中,当我在Node的命令行中,但是我想要一劳永逸地添加这个全局模块文件夹,以便节点将总是search该目录中的模块,当我require()
他们从命令行。 在此先感谢有关使npm和Node共存的任何帮助和指针!
好,我知道了。 结合来自http://nodejs.org/docs/v0.4.7/api/modules.html#file_Modules和https://github.com/isaacs/npm/blob/master/doc/faq.md#readme的信息,它是清楚Node检查模块时检查NODE_PATH环境variables。 要做到这一点,我做了以下几点:
echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc
这将NODE_PATH设置为npm的全局安装文件夹。
该死的,我误解了。 对于那个很抱歉。
回到话题中,你可以把这两行放在set-repl-paths.js
require.paths.unshift('/usr/lib/node_modules'); require("repl").start();
然后执行node set-repl-paths.js
你将得到一个已经设置node set-repl-paths.js
path的repl。 你可以编写一个简单的bash脚本或者设置一个shell别名,这样你就可以inputnode-repl
或类似的东西。
对于npm 1.x,您应该使用本地安装,并为提供命令行实用程序的模块进行全局安装。
如果你真的想全局安装模块 foo
,然后在你的模块文件夹发出一个npm link foo
。现在你可以在模块中 require("foo")
。
最佳做法是使用本地安装。
请参阅nodejs博客上的npm 1.0:Global vs Local安装 。
要全局安装软件包(通常由命令行使用)
npm install --global PACKAGE_NAME
在我的情况下,我想安装jslint
作为命令行工具。 所以我跑了
npm install --global jslint
这将安装包
/usr/local/lib/node_modules/
那么为什么这一切呢? 如果在项目中专门使用包,则不应该在全局安装包。
有关更多信息,请查看帮助页面。
npm help install
npm help global
我也在npm
FAQ中find它
在回复此: https : //stackoverflow.com/a/5923898/7381355
您可以将此添加到您的.bashrc中,以便在运行repl时仅设置NODE_PATH,因为要求全局模块是反模式。
node() { if (( $# == 0 )); then NODE_PATH=$(npm root -g) command node else command node "$@" fi }
当没有parameter passing给节点时,它设置NODE_PATH。 所以它不会像node -i
那样工作。 您将不得不添加更多的参数检查来覆盖所有运行repl的情况。
这将使repl始终设置NODE_PATH。 如果您希望能够select是否运行带有全局模块的repl或脚本,则可以将其添加到.bashrc中。
node_global() { NODE_PATH=$(npm root -g) node "$@" }
然后运行node_global。 我去了第二个选项。