有没有办法如何运行" nvm使用"自动进入"预启动" npm脚本?

时间:2015-12-15 23:03:55

标签: javascript node.js bash nvm

我想自动调用" nvm使用"当我跑步" npm start"。 所以我想出了这个解决方案:

的package.json

var overlap = empsColl.Where(e => pets.Any(p => p.SocialSecurityNumber == e.SSN)).ToList();

.nvmrc

"scripts": {
"prestart": "sh test.sh",
"start": "nodemon index.js"
}

test.sh

4

这可以在nvm版本控制台输出之间切换:

#!/bin/bash

if [ -d ~/.nvm ]
  then
    source ~/.nvm/nvm.sh

    nvm use
fi

但是当我调用form index.js" console.log(process.versions);" nvm脚本可能在不同的进程中执行,因此输出为:

> sh test.sh

Found '/my-user-path/.nvmrc' with version <4>
Now using node v4.2.2 (npm v2.14.7)

> app@1.0.0 start /app-path/
> nodemon index.js

有任何建议如何以正确的方式解决这个问题?

由于

2 个答案:

答案 0 :(得分:9)

通常在Mac上,nvm.sh文件位于您的主路径中。如果有多个Mac用户使用代码,请使用$ HOME变量。

"scripts": {
    "prestart": "source $HOME/.nvm/nvm.sh; nvm use"
}

我会将此作为对上述回复的评论添加,但我不允许:(

答案 1 :(得分:2)

你的package.json看起来像

"scripts": {
"start": "source /whereever/located/nvm.sh; nvm use; nodemon index.js"
}

解释。 “start”行是一个shell实例。所以你必须让nvm在那个shell实例中初始化PATH。此外,nvm是shell函数,而不是可执行的shell脚本。 nvm函数存在于shell实例中,并通过获取nvm.sh文件来创建。

很抱歉编辑因为我没有测试我的前两个。