【问题标题】:How to set up Travis CI to use linked (local) packages?如何设置 Travis CI 以使用链接(本地)包?
【发布时间】:2018-10-16 07:20:48
【问题描述】:

我在myPackage 中使用npm link myDependency,这样我就可以同时处理这两个问题(而不是在每次更改后发布myDependency,然后更新myPackage 以对其进行测试。)

我希望能够将 Travis CI 与 myPackage 一起使用,但正如人们所料(我实际上忘记了,但在尝试构建后变得非常明显):在 Travis 上运行 npm install 将无法安装链接包。

那么,我该怎么办?我看到有人建议使用 Docker 容器,但这感觉像是很多基础设施,而且我对 Docker 没有经验。我想到的另一个选择是添加一个预安装脚本,将myDependency repo 的 dev 分支克隆到 node_modules 文件夹中。

不过,首先,我确信我不是第一个同时开发两个软件包的人,因此必须就如何完成达成一些共识。

【问题讨论】:

    标签: node.js npm package installation travis-ci


    【解决方案1】:

    我通过在 Travis 上复制我的开发设置解决了这个问题。

    解决这个问题的关键在于为 Travis 提供访问 GitHub 的方法。为此,请登录 GitHub 并转到个人访问令牌页面。

    您将看到一个表单,其中包含您的令牌名称以及您希望授予访问权限的字段。填写诸如“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"
    

    就是这样! Travis 现在应该可以拉取(如果您喜欢的话,也可以推送)到您的 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
    

    这实际上在做什么?

    1. 我们将 Git 配置为使用我们保存的访问令牌。
    2. 我们向上一个目录并将存储库克隆到与存储库同名的新文件夹中。
    3. 我们进入存储库并安装其依赖项。 我们创建一个全局 NPM 链接。
    4. 最后,我们回到主项目(我们正在运行 Travis 的项目)。请注意,此名称必须与 GitHub 上存储库的名称匹配,因为这是 Travis 将使用的名称。

    此外,我们需要实际使用上面创建的链接,所以在安装部分添加以下行:

    install:
    - npm install
    - npm link my-dependency
    

    确保将 npm 链接放在 npm install 之后,因为默认情况下 npm install 会删除所有链接(对于我们这些使用 npm link 的人来说,这是一个非常烦人的错误)。

    【讨论】:

    • 我只想指出,在npm link my-dependency中,my-dependency的值表示package.json中的项目名称,而不是它所在的文件夹。
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多