Answers:
如果拥有系统范围的npm软件包是您的主要问题,那么可以考虑在npm中使用非常酷的'bundle'命令。这更接近于冻结宝石或在导轨中使用捆绑器,而不是rvm。
超级容易。只需创建一个package.json文件:
{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}
然后运行:
npm bundle vendor
或如果您的npm版本> = 1.0,请运行:
npm install
冻结到供应商目录中。然后使用:
require.paths.unshift('./vendor');
npm install
取代npm bundle
。
nodeenv -node.js的虚拟环境(模拟virtualenv)
node.js
环境与Python环境一起被激活。请参阅nodeenv -p
。
还有一些Node版本管理系统可以提供帮助。
查看Nave https://github.com/isaacs/nave
也可以使用NVM https://github.com/creationix/nvm
还有一个叫做n https://github.com/visionmedia/n
bxjx的答案在概念上是准确的。但是,请注意,bundle命令不再包含目录。它将始终将软件包放入node_modules
文件夹中,以便npm知道以后可以在哪里找到它们(并且可以避免重复安装依赖项)。
任何解决方案都可能涉及在系统范围内安装npm和nave(即,在您的中PATH
,可能在~
某处),但是仅在虚拟环境中安装特定的依赖项。
我对github问题进行了更彻底的回应。
tl; dr:用例是有效且有用的,尽管它大部分都在那儿,但效果却不尽人意。我们应该确保仔细考虑并正确地做。
您不必总是全局安装依赖项。通常建议您这样做,因为这样您就可以使用npm软件包提供的命令,但是如果您将其安装在本地(在node_modules
)目录中,则还可以使用这些命令,它们只会出现在node_modules/.bin/
目录中,因此您必须输入node_modules/.bin/<command>
,这很烦人,但是您当然可以将此路径添加到PATH
环境变量中:
export PATH=node_modules/.bin:$PATH
然后,您只需键入即可使用<command>
!
实际上有一个npm命令返回.bin
目录的绝对路径:
$ npm bin
/path/to/node_modules/.bin
当您位于项目的子目录中时,此命令也可以使用,它将返回在node_modules/.bin
其父目录中找到的第一个目录。
您可以在自己.bashrc
的.bin/
目录中添加此别名,以自动将目录添加到您的目录PATH
:
alias nodebin='export PATH=$(npm bin):$PATH'
因此,当您位于根目录中的项目的node_modules/
目录中时,可以键入nodebin
,然后可以使用目录中的所有命令.bin/
!
如果您喜欢简单的话,我真的推荐visionmedia的n,再简单不过了!
npm install
于此目的。