mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 15:04:52 +09:00
Replace webpack and Module Federation with Vite 8. The controller build emits one entry per shared module (lib, web_ui, typebox, antd, react, react-dom, react-router) and lists them in manifest.json. The controller turns that into an import map in index.html, and plugins are built as ES modules that import the shared modules by name and are loaded with import(). The shared Vite setup lives in @clusterio/web_ui/vite.mjs. Plugins use clusterioPlugin(), which exposes index, package.json and web/index under the same keys the webpack template used. The --dev and --dev-plugin flags now run the Vite dev server in middleware mode with hot module replacement. Browser polyfills move from web_ui to lib, which is the code that needs them, and lib sets the process and Buffer globals itself. Refs #1127 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
52 lines
1.9 KiB
YAML
52 lines
1.9 KiB
YAML
name: Install dependencies
|
|
description: Set up pnpm and Node.js, restore caches and run pnpm install
|
|
|
|
inputs:
|
|
node-version:
|
|
description: Node.js version passed to actions/setup-node
|
|
required: true
|
|
ignore-scripts:
|
|
description: Skip the prepare scripts that build the workspace packages
|
|
default: "false"
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- uses: pnpm/action-setup@v6
|
|
- uses: actions/setup-node@v7
|
|
with:
|
|
node-version: ${{ inputs.node-version }}
|
|
|
|
# The lockfile is not committed, so the usual lockfile hash key does not
|
|
# apply. Instead a new store snapshot is saved whenever a package.json
|
|
# changes or a week passes, and every run restores the most recent one.
|
|
- id: store
|
|
shell: bash
|
|
run: |
|
|
echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"
|
|
echo "week=$(date -u +%G-%V)" >> "$GITHUB_OUTPUT"
|
|
- uses: actions/cache@v6
|
|
with:
|
|
path: ${{ steps.store.outputs.path }}
|
|
key: pnpm-store-${{ runner.os }}-${{ steps.store.outputs.week }}-${{ hashFiles('**/package.json', 'pnpm-workspace.yaml') }}
|
|
restore-keys: pnpm-store-${{ runner.os }}-
|
|
|
|
# The prepare scripts run tsc --build, which is incremental when its
|
|
# previous output is present. Every run saves its output and the next run
|
|
# starts from the most recent one.
|
|
- if: inputs.ignore-scripts != 'true'
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: |
|
|
packages/*/dist
|
|
plugins/*/dist
|
|
key: build-${{ runner.os }}-${{ github.sha }}
|
|
restore-keys: build-${{ runner.os }}-
|
|
|
|
- shell: bash
|
|
run: pnpm i --no-frozen-lockfile ${{ inputs.ignore-scripts == 'true' && '--ignore-scripts' || '' }}
|
|
# Drop packages the restored store had but this install did not use, so
|
|
# the snapshot does not grow with every version bump.
|
|
- shell: bash
|
|
run: pnpm store prune
|