0

我在使用带有 Github Actions 的 npm 工作区时遇到问题。

我有以下文件夹结构

项目根:

  • ./package.json<- 与"workspaces": ["./shared", "./clients/project-a"]
  • ./tsconfig.json<- 与"compilerOptions":{"target":"es5","module":"esnext"},"references":[{"path":"./shared"},{"path":"./clients/project-a"}]
  • ./shared/*
    • ./tsconfig.json<- 扩展../tsconfig.json,与"composite":true
    • ./package.json<- 带脚本"prepare": "npm run build"
  • ./clients/project-a/*
    • ./tsconfig.json<- 扩展../../tsconfig.json

和. 4.3.2_ shared_clients/project-a

在我的本地环境中,我有 node 16.2.0

在本地环境中,清理 node_modules 和 package-lock,从 root 启动安装并clients/project-a使用npm run build -w @my/project-a它构建成功,没有错误。

当我尝试在 Github Action 工作流程中启动相同的命令(安装和构建)时,它首先clients/project-a使用exit code 1and Cannot find module: '@my/shared'. Make sure this package is installed.on构建失败import { X } from '@my/shared';

name: Build clients
on:
  push:
    branches:
      - mybranch/*
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [16.2.x]

    steps:
      - uses: actions/checkout@v2
        with:
          persist-credentials: false
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install modules
        run: |
          npm install --legacy-peer-deps
      - name: build clients
        run: |
          npm run build -w @my/project-a
        env:
          CI: false

(复制/粘贴时缩进可能已损坏)

有人可以帮我弄清楚问题出在哪里?

####### 更新 #######

我发现问题可能是我使用 baseUrl 作为 project-a 的别名。它的 tsconfig 包含 baseUrl:"./src",它允许我导入文件而不会被 "../" 或 "src/" 抓狂。

4

0 回答 0