设置节点 pnpm node_modules 位置

问题描述 投票:0回答:1

我仍然遇到这个问题,这在开发中很好——我只是在顶层手动创建一个符号链接

node_modules
。不过,我现在正在尝试将 linting 集成到我的 GitHub CI 操作中,因此需要能够在
actions/setup-node
创建的构建上创建符号链接。

执行

actions/setup-node
时,
node_modules
pnpm install
放在哪里?

我尝试只做我在本地所做的事情,假设它安装在跑步者的

cwd
中:

name: 'Intall'
description: 'Sets up the repository'
inputs:
  node-version: # node version on which to build
    description: "Node version for the build"
    required: true
    default: 'latest'
runs:
  using: 'composite'
  steps:
    - name: Set up pnpm
      # pnpm version controlled in top level package.json
      uses: pnpm/action-setup@v4
    - name: Install NodeJS
      uses: actions/setup-node@v4
      with:
        node-version: ${{ inputs.node-version }}
    - name: Install dependencies
      shell: bash
      run: pnpm install --frozen-lockfile
    # pnpm doesn't do this? ¯\_(ツ)_/¯
    # needed for linting
    - name: Link globals package
      shell: bash
      run: ln -s node_modules/.pnpm/[email protected]/node_modules/globals/ node_modules/globals

但是

ln
失败了。基于这个答案(实际上是关于
npm ci
,而不是
setup-node
pnpm
,但我想我应该尝试一下),我尝试切换到
~/.npm

      run: ln -s ~/.npm/node_modules/.pnpm/[email protected]/node_modules/globals/ ~/.npm/node_modules/globals

但还是没有爱:

ln: failed to create symbolic link '/home/runner/.npm/node_modules/globals': No such file or directory

setup-node
文档说,“该操作......在机器上缓存全局缓存而不是
node_modules
”,但这似乎指的是全局,这似乎不正确;即使是,它也没有说明将其缓存在哪里。

我还尝试更深入地挖掘 GitHub Actions 输出,它说

  env:
    PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin

但是从网上搜索发现,

PNPM_HOME
仅存储
pnpm
本身,而不是已安装的软件包。

actions/setup-node
和/或
pnpm/action-setup
在哪里放置本地
node_modules
,以便我可以创建到
<node_modules>/.pnpm/node_modules/[email protected]/node_modules/globals
缺少的符号链接?

github-actions eslint pnpm
1个回答
0
投票

事实证明你可以用

github.workspace
获取路径,所以这最终成功了:

    - name: Link globals package
      shell: bash
      run: ln -s ${{ github.workspace }}/node_modules/.pnpm/[email protected]/node_modules/globals/ ${{ github.workspace }}/node_modules/globals
© www.soinside.com 2019 - 2024. All rights reserved.