我在使用带有 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 1
and 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/" 抓狂。