The @d-matrix/icons-react
package is an dependency for @d-matrix/icons-site
package. Try to use GitHub Actions to deploy a static HTML built from @d-matrix/icons-site
package as GitHub Pages.
npm workspace:
$ tree -L 2 -I node_modules
.
|-- LICENSE
|-- README.md
|-- package-lock.json
|-- package.json
`-- packages
|-- icons-react
`-- icons-site
3 directories, 4 files
packages/icons-site/package.json
:
{
"name": "@d-matrix/icons-site",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@d-matrix/icons-react": "^0.0.6",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@eslint/js": "^9.15.0",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@vitejs/plugin-react": "^4.3.4",
"eslint": "^9.15.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.14",
"globals": "^15.12.0",
"typescript": "~5.6.2",
"typescript-eslint": "^8.15.0",
"vite": "^6.0.1"
}
}
.github/workflows/static.yml
:
name: Deploy static content to Pages
on:
push:
branches: ['main']
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: 'pages'
cancel-in-progress: true
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build:site --verbose
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload dist folder
path: './packages/icons-site/dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
package.json
:
{
"name": "dm-icons",
"workspaces": [
"packages/icons-react",
"packages/icons-site"
],
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"generate": "npm run generate --workspace=@d-matrix/icons-react",
"predev": "npm run generate && npm run ref",
"dev": "npm run dev --workspace=@d-matrix/icons-site",
"ref": "npm i @d-matrix/icons-react -w @d-matrix/icons-site",
"build:site": "npm run build --workspace=@d-matrix/icons-site"
}
}
Run npm run build:site --verbose
npm run build:site --verbose
shell: /usr/bin/bash -e {0}
npm verbose cli /opt/hostedtoolcache/node/18.20.5/x64/bin/node /opt/hostedtoolcache/node/18.20.5/x64/bin/npm
npm info using npm@10.8.2
npm info using node@v18.20.5
npm verbose title npm run build:site
npm verbose argv "run" "build:site" "--loglevel" "verbose"
npm verbose logfile logs-max:10 dir:/home/runner/.npm/_logs/2024-12-20T08_32_38_796Z-
npm verbose logfile /home/runner/.npm/_logs/2024-12-20T08_32_38_796Z-debug-0.log
> build:site
> npm run build --workspace=@d-matrix/icons-site
npm verbose cli /opt/hostedtoolcache/node/18.20.5/x64/bin/node /opt/hostedtoolcache/node/18.20.5/x64/bin/npm
npm info using npm@10.8.2
npm info using node@v18.20.5
npm verbose title npm run build
npm verbose argv "run" "build" "--workspace" "@d-matrix/icons-site"
npm verbose logfile logs-max:10 dir:/home/runner/.npm/_logs/2024-12-20T08_32_38_920Z-
npm verbose logfile /home/runner/.npm/_logs/2024-12-20T08_32_38_920Z-debug-0.log
> @d-matrix/icons-site@0.0.0 build
> tsc -b && vite build
Error: src/App.tsx(1,24): error TS2307: Cannot find module '@d-matrix/icons-react' or its corresponding type declarations.
npm verbose stack Error: command failed
npm verbose stack at promiseSpawn (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:22:22)
npm verbose stack at spawnWithShell (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:124:10)
npm verbose stack at promiseSpawn (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:12:12)
npm verbose stack at runScriptPkg (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js:77:13)
npm verbose stack at runScript (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/run-script.js:9:12)
npm verbose stack at #run (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/lib/commands/run-script.js:130:13)
npm verbose stack at RunScript.execWorkspaces (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/lib/commands/run-script.js:62:24)
npm verbose stack at async Npm.exec (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/lib/npm.js:207:9)
npm verbose stack at async module.exports (/opt/hostedtoolcache/node/18.20.5/x64/lib/node_modules/npm/lib/cli/entry.js:74:5)
npm verbose pkgid @d-matrix/icons-site@0.0.0
npm error Lifecycle script `build` failed with error:
npm error code 2
npm error path /home/runner/work/dm-icons/dm-icons/packages/icons-site
npm error workspace @d-matrix/icons-site@0.0.0
npm error location /home/runner/work/dm-icons/dm-icons/packages/icons-site
npm error command failed
npm error command sh -c tsc -b && vite build
npm verbose cwd /home/runner/work/dm-icons/dm-icons
npm verbose os Linux 6.5.0-1025-azure
npm verbose node v18.20.5
npm verbose npm v10.8.2
npm verbose exit 2
npm verbose code 2
npm verbose cwd /home/runner/work/dm-icons/dm-icons
npm verbose os Linux 6.5.0-1025-azure
npm verbose node v18.20.5
npm verbose npm v10.8.2
npm verbose exit 2
npm verbose code 2
Error: Process completed with exit code 2.
I don't know why the build fails when using GitHub Actions. The build npm script run successfully in local machine.
$ npm run build:site
> build:site
> npm run build --workspace=@d-matrix/icons-site
> @d-matrix/icons-site@0.0.0 build
> tsc -b && vite build
vite v6.0.3 building for production...
✓ 45 modules transformed.
dist/index.html 0.48 kB │ gzip: 0.31 kB
dist/assets/index-dYOE1zTs.css 0.19 kB │ gzip: 0.16 kB
dist/assets/index-D70fpBM4.js 160.81 kB │ gzip: 51.67 kB
✓ built in 873ms
Tried the solutions: tsc throws `TS2307: Cannot find module` for a local file, none of them work.
I changed the workflow steps like below:
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build icons
run: npm run build:icons --verbose
- name: Reference icons
run: npm run ref
- name: Build site
run: npm run build:site --verbose
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload dist folder
path: './packages/icons-site/dist'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Then it works