我在npm link myDependency
中使用myPackage
,以便我可以同时处理这两项工作(相对于每次更改后发布myDependency
,然后更新myPackage
以对其进行测试。)
我希望能够将Travis CI与myPackage
一起使用但是,正如人们所预料的那样(我实际上已经忘记了,但在尝试构建后变得非常明显):在Travis上运行npm install
赢了& #39;设法安装链接包。
那么,我该怎么办?我看到有人建议使用Docker容器,但感觉就像很多基础设施,而且我对Docker没有经验。我想到的另一个选项是添加一个预安装脚本来将myDependency
repo的dev分支克隆到node_modules
文件夹中。
首先,我确定我不是第一个同时在两个包装上工作过的人,所以必须就如何 完成
答案 0 :(得分:0)
我通过在Travis上复制我的开发设置来解决这个问题。
解决这个问题的关键是让Travis获得访问GitHub的方法。为此,请登录GitHub并转到Personal access tokens页面。
您会看到一个表单,其中包含令牌名称的字段以及您要授予其访问权限的权限。填写一个名称,例如" Travis CI Pull Repo"并选择" repo"部分。其他都不是必需的,因此无需访问它们。在页面底部是一个绿色按钮"生成令牌。"
返回代码编辑器,如果您还没有项目的根目录,请在项目的根目录中创建一个.travis.yml
文件。我们将在下一步使用RubyGem,因此如果您没有安装Ruby gem,则需要下载它。您可以通过在终端中运行gem -v
来检查是否安装了它。
如果这样做,请在终端中运行以下命令以安装Travis RubyGem:
gem install travis
接下来,在终端中,确保您在项目的根目录中工作,并使用Travis gem将访问令牌添加到.travis.yml文件中:
travis encrypt GH_TOKEN="token-from-github-goes-here" --add
如果您成功了,您的.travis.yml
文件应该有一堆随机文本,并保存加密令牌:
env:
global:
secure: "lots-of-seemingly-random-characters"
就是这样!特拉维斯现在应该可以拉(并推送你的内容)到你的GitHub存储库。
显然,您的.travis.yml
文件可能与我的文件有很大差异,但在最基本的情况下,我设置了.travis.yml
这样的文件:
language: node_js
node_js:
- '6'
cache:
directories:
- node_modules
install:
- npm install
script:
- npm run lint
- npm run test
env:
global:
secure: "lots-of-seemingly-random-characters"
要添加依赖项的克隆和链接,请使用以下命令添加before_install
部分:
before_install:
- git config credential.helper "store --file=.git/credentials"
- echo "https://${GH_TOKEN}:@github.com" > .git/credentials
- cd ..
- git clone https://github.com/my-name/my-dependency.git my-dependency
- cd my-dependency
- npm install
- npm link
- cd ../my-main-project
这实际上是做什么的?
此外,我们需要实际使用上面创建的链接,因此在安装部分添加以下行:
install:
- npm install
- npm link my-dependency
确保在npm install
之后添加npm链接,因为默认情况下npm install
会删除任何链接(对于我们这些使用npm link
的人而言,这是一个非常烦人的错误。)