Travis - 控制 NPM 安装使用哪个节点版本

Woo*_*low 5 continuous-integration build-process node.js npm travis-ci

我正在尝试安装npm 包(markdown-pdf)作为我的 Travis-CI 构建的一部分,我认为它与旧版本的 Node.js 不兼容。在我的本地计算机上,我正在运行 Node 版本 0.10.36,并且它可以在这里工作,因此我将我认为是定义特定版本的可接受方式添加到我的文件顶部.travis.yml(尽管我对此并不清楚)任何一个)。完整文件的 MCVE 版本如下。

language: node_js
node_js:
- "0.10"
install:
- sudo apt-get install npm
- npm config set registry http://registry.npmjs.org/
- sudo npm install -g markdown-pdf
script:
- echo "stuff was installed."
Run Code Online (Sandbox Code Playgroud)

在构建日志的顶部,我看到以下内容,这似乎表明我的更改有效:

$ nvm install 0.10
######################################################################## 100.0%
Now using node v0.10.40
$ node --version
v0.10.40
$ npm --version
1.4.28
$ nvm --version
0.23.3
Run Code Online (Sandbox Code Playgroud)

然而,在日志的更下方,当 travis 尝试执行时sudo npm install -g markdown-pdf,日志会报告以下内容。请注意,它表明该包可能与安装的 Node 版本不兼容,并且它声称我正在使用 Node v0.6.12

$ sudo npm install -g markdown-pdf
npm http GET http://registry.npmjs.org/markdown-pdf
npm http 200 http://registry.npmjs.org/markdown-pdf
npm ERR! Error: No compatible version found: markdown-pdf
npm ERR! No valid targets found.
npm ERR! Perhaps not compatible with your version of node?
npm ERR!     at installTargetsError (/usr/share/npm/lib/cache.js:488:10)
npm ERR!     at next_ (/usr/share/npm/lib/cache.js:438:17)
npm ERR!     at next (/usr/share/npm/lib/cache.js:415:44)
npm ERR!     at /usr/share/npm/lib/cache.js:408:5
npm ERR!     at saved (/usr/share/npm/lib/utils/npm-registry-client/get.js:147:7)
npm ERR!     at Object.oncomplete (/usr/lib/nodejs/graceful-fs.js:230:7)
npm ERR! You may report this log at:
npm ERR!     <http://bugs.debian.org/npm>
npm ERR! or use
npm ERR!     reportbug --attach /home/travis/build/ahemmeter/ahemmeter.github.io/npm-debug.log npm
npm ERR! 
npm ERR! System Linux 2.6.32-042stab108.3
npm ERR! command "node" "/usr/bin/npm" "install" "-g" "markdown-pdf"
npm ERR! cwd /home/travis/build/ahemmeter/ahemmeter.github.io
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.1.4
npm ERR! message No compatible version found: markdown-pdf
npm ERR! message No valid targets found.
npm ERR! message Perhaps not compatible with your version of node?
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/travis/build/ahemmeter/ahemmeter.github.io/npm-debug.log
npm not ok
Run Code Online (Sandbox Code Playgroud)

我想我已经提供了足够的信息,但您还可以查看该项目的公共构建日志以及它正在构建的github 存储库。

我在声明使用哪个版本的 Node 时犯了错误吗?我是否需要(或者应该)对 npm、nvm 和 markdown-pdf 做类似的事情?如何强制 npm-install 使用较新版本的 Node 而不是旧版本?

请注意,我将存储库设置为通过 HTTP 而不是 HTTPS 下载。当我这样做时,错误消息从“无法从注册表获取:markdown-pdf”更改为“找不到兼容版本:markdown-pdf”,这似乎是朝着正确方向迈出的一步,所以我保留了它;不过,我在这里提到它是为了防止它可能引起冲突。

Woo*_*low 1

为了在使用 node.js 时指定依赖项,travis 似乎需要一个package.json文件。您还可以使用它来指定要下载的节点包版本。

.travis.yml

language: node_js
node_js:
- "0.10"
script:
- echo "stuff was installed."
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name" : "ahemmeter.github.io",
  "version" : "0.0.0",
  "dependencies" : {
    "markdown-pdf" : "5.3.x"
  }
}
Run Code Online (Sandbox Code Playgroud)

OP的注释:这是我找到的答案,但是如果有人发布了不涉及使用文件的答案package.json(这只是一个测试套件而不是一个包,我不想将其作为包发布),我将该答案标记为已接受。