在VM共享目录中安装npm模块和grunt问题

我试图把开发环境放在一起,npm正在导致我的问题。 这是我的情况:

我有一台运行Windows和VMWare Player的开发机器。 我有一个configuration了Apache,PHP,NodeJS等的Ubuntu服务器虚拟机(没有用户界面)。由于虚拟机没有用户界面,我想使用主机操作系统进行开发。 我在VM中设置了一个共享目录,作为/ mnt / hgfs / source / <project name>来访问。

当我试图在这个目录下运行npm install时,问题就出现了。 我看到很多错误,如Error: UNKNOWN, symlink '../requirejs/bin/r.js' 。 我知道我的package.json文件是可以的,因为如果我将所有文件从共享中复制到常规的unix目录(/ var / www / <项目名称>), npm install工作正常。 所以npm在共享目录中安装模块时有问题。

我想我可以通过在全球范围内安装节点软件包来解决这个问题,但无论出于何种原因,GruntJS爱好者都不喜欢这个 ,它必须在本地。 然后我尝试创build一个从全局到本地的npm链接,但这只是导致一个新的错误: Error: May not delete: /usr/lib/node_modules/grunt 。 我对/ usr / lib / node_modules目录和所有子目录拥有完全权限。

我真的不想在虚拟机中使用命令行文本编辑器来编写整个项目,但看起来我无法通过VMWare在主机和客户机操作系统中都可以访问我的代码库。

我非常感谢任何有关如何1)允许将npm模块安装到我的共享目录中的build议,2)全局运行Grunt,或者3)解决我所看到的npm链接错误。

编辑 :发布后不久,我意识到这里的根本问题 – 当主机操作系统是Windows时,无法在虚拟机共享目录中创build符号链接。 由于npm install默认使用符号链接,所以它不起作用,这就是为什么接受的解决scheme能够工作。

尝试以下操作:

 npm install --no-bin-links 

Grunt应该是本地的,因为插件和gruntfile.js可能需要特定版本的Grunt来运行你的任务。 如果另一个开发人员想要运行你的任务,他们可以发出一个npm install ,然后设置它们。 (更多信息见这里 ) grunt-cli是全局的,用于运行本地版本的grunt