Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: migrate from yarn to pnpm #567

Merged
merged 19 commits into from Mar 13, 2024
2 changes: 1 addition & 1 deletion .github/renovate.json
Expand Up @@ -34,7 +34,7 @@
"commitMessageAction": "bump up",
"commitMessageTopic": "{{depName}} version",
"ignoreDeps": [],
"postUpdateOptions": ["yarnDedupeHighest"],
"postUpdateOptions": ["pnpmDedupe"],
"lockFileMaintenance": {
"enabled": true,
"extends": ["schedule:weekly"]
Expand Down
32 changes: 21 additions & 11 deletions .github/workflows/ci.yaml → .github/workflows/ci.yml
Expand Up @@ -95,47 +95,57 @@ jobs:
bins: just
cache-base: main

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8.15.4

- name: Install node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
cache: pnpm

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Build Rolldown
run: yarn build
run: pnpm build

- name: Type Check
run: yarn type-check
run: pnpm type-check

- name: Run Test
run: yarn test
run: pnpm test

node-validation:
name: Node Validation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8.15.4

- name: Install node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
cache: pnpm

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Oxc Lint
run: yarn lint-code
run: pnpm lint-code

- name: Lint Filename
run: yarn lint-filename
run: pnpm lint-filename

- name: Format Check
run: yarn format:ci
run: pnpm format:ci

- name: Lint Spell
run: yarn lint-spell
run: pnpm lint-spell
9 changes: 7 additions & 2 deletions .github/workflows/codspeed.yml
Expand Up @@ -38,14 +38,19 @@ jobs:
cache-base: main
cache-target: release

- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8.15.4

- name: Install node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
cache: pnpm

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Setup benchmark
run: just setup-bench
Expand Down
136 changes: 77 additions & 59 deletions .github/workflows/release.yml
Expand Up @@ -15,7 +15,7 @@ jobs:
include:
- os: macos-latest
target: x86_64-apple-darwin
build: yarn build-binding:release
build: pnpm build-binding:release

- os: macos-latest
target: aarch64-apple-darwin
Expand All @@ -25,76 +25,79 @@ jobs:
export CXX=$(xcrun -f clang++);
SYSROOT=$(xcrun --sdk macosx --show-sdk-path);
export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT";
export CARGO_BUILD_TARGET=aarch64-apple-darwin
yarn build-binding:release
export CARGO_BUILD_TARGET=aarch64-apple-darwin;
pnpm build-binding:release

- os: windows-latest
target: x86_64-pc-windows-msvc
build: yarn build-binding:release
build: pnpm build-binding:release

- os: windows-latest
target: i686-pc-windows-msvc
build: |
export CARGO_BUILD_TARGET=i686-pc-windows-msvc
yarn build-binding:release
export CARGO_BUILD_TARGET=i686-pc-windows-msvc;
pnpm build-binding:release

- os: windows-latest
target: aarch64-pc-windows-msvc
build: |
export CARGO_BUILD_TARGET=aarch64-pc-windows-msvc
yarn build-binding:release
export CARGO_BUILD_TARGET=aarch64-pc-windows-msvc;
pnpm build-binding:release

- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
build: |-
set -e &&
export CARGO_BUILD_TARGET=x86_64-unknown-linux-gnu &&
yarn build-binding:release
set -e;
export CARGO_BUILD_TARGET=x86_64-unknown-linux-gnu;
pnpm build-binding:release

- os: ubuntu-latest
target: x86_64-unknown-linux-musl
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
build: yarn build-binding:release
build: pnpm build-binding:release

- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
build: |-
set -e &&
export CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu &&
rustup target add aarch64-unknown-linux-gnu &&
yarn build-binding:release
set -e;
export CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu;
rustup target add aarch64-unknown-linux-gnu;
pnpm build-binding:release

- os: ubuntu-latest
target: armv7-unknown-linux-gnueabihf
build: |
sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabihf -y
export CARGO_BUILD_TARGET=armv7-unknown-linux-gnueabihf
yarn build-binding:release --zig --zig-link-only
sudo apt-get update;
sudo apt-get install gcc-arm-linux-gnueabihf -y;
export CARGO_BUILD_TARGET=armv7-unknown-linux-gnueabihf;
pnpm build-binding:release --use-napi-cross

# pnpm build-binding:release --zig --zig-link-only
# trigger CI

- os: ubuntu-latest
target: aarch64-linux-android
build: |
export CARGO_BUILD_TARGET=aarch64-linux-android
yarn build-binding:release
export CARGO_BUILD_TARGET=aarch64-linux-android;
pnpm build-binding:release

- os: ubuntu-latest
target: armv7-linux-androideabi
build: |
export CARGO_BUILD_TARGET=armv7-linux-androideabi
yarn build-binding:release
export CARGO_BUILD_TARGET=armv7-linux-androideabi;
pnpm build-binding:release

- os: ubuntu-latest
target: aarch64-unknown-linux-musl
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
build: |-
set -e &&
rustup target add aarch64-unknown-linux-musl &&
export CARGO_BUILD_TARGET=aarch64-unknown-linux-musl &&
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc &&
yarn build-binding:release
set -e;
rustup target add aarch64-unknown-linux-musl;
export CARGO_BUILD_TARGET=aarch64-unknown-linux-musl;
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc;
pnpm build-binding:release
name: Build ${{ matrix.target }}
runs-on: ${{ matrix.os }}
steps:
Expand All @@ -113,14 +116,21 @@ jobs:
with:
version: 0.11.0

# https://github.com/nodejs/node-gyp/issues/2869
- name: Setup python
run: pip install setuptools
if: ${{ matrix.os == 'macos-latest' }}

- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn

- name: Install pnpm
run: corepack enable

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Build Binding in docker
uses: addnab/docker-run-action@v3
Expand All @@ -141,7 +151,7 @@ jobs:
with:
if-no-files-found: error
name: bindings-${{ matrix.target }}
path: crates/rolldown_binding/*.node
path: packages/rolldown/src/rolldown-binding.*.node

build-node-packages:
strategy:
Expand All @@ -152,16 +162,18 @@ jobs:
- uses: actions/checkout@v4

- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn

- name: Install pnpm
run: corepack enable

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Build Node Packages
run: yarn workspace rolldown run build
run: pnpm build:release

- name: Upload Node Artifact
uses: actions/upload-artifact@v4
Expand All @@ -182,16 +194,18 @@ jobs:
cache-base: main

- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn

- name: Install pnpm
run: corepack enable

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Build Wasm
run: yarn build-wasm:release
run: pnpm build-wasm:release

- name: Upload Wasm Artifact
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -225,21 +239,23 @@ jobs:
submodules: true # Pull submodules for additional files

- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn

- name: Install pnpm
run: corepack enable

- name: Install dependencies
run: yarn install
run: pnpm install

- name: Download Binding Artifacts
uses: actions/download-artifact@v4
with:
path: crates/rolldown_binding/artifacts

- name: Move Binding Artifacts
run: yarn workspace @rolldown/node-binding artifacts
run: pnpm --filter rolldown artifacts

- name: List packages
run: ls -R ./crates/rolldown_binding
Expand All @@ -252,7 +268,7 @@ jobs:
name: node-artifact

- name: Node Test
run: yarn test
run: pnpm test

publish:
name: Publish Npm Packages
Expand All @@ -266,13 +282,15 @@ jobs:
- uses: actions/checkout@v4

- name: Install node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn

- name: Install pnpm
run: corepack enable

- name: Install dependencies
run: yarn install && git reset --hard # fix yarn install add new line for package.json
run: pnpm install && git reset --hard # fix pnpm install add new line for package.json

- name: Download Wasm Artifacts
uses: actions/download-artifact@v4
Expand All @@ -286,7 +304,7 @@ jobs:
path: crates/rolldown_binding/artifacts

- name: Move Binding Artifacts
run: yarn workspace @rolldown/node-binding artifacts
run: pnpm --filter rolldown artifacts

- name: List packages
run: ls -R ./crates/rolldown_binding
Expand All @@ -298,12 +316,12 @@ jobs:
path: packages/rolldown/dist
name: node-artifact

- name: Publish
run: |
find ./packages/ -type d -maxdepth 1 -exec cp LICENSE {} \;
find ./packages/ -type d -maxdepth 1 -exec cp THIRD-PARTY-LICENSE {} \;
echo "//registry.npmjs.org/:_authToken=$ROLLDOWN_NPM_TOKEN" >> ~/.npmrc
yarn lerna publish from-package --no-private --no-git-reset --yes
env:
ROLLDOWN_NPM_TOKEN: ${{ secrets.ROLLDOWN_NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Publish
# run: |
# find ./packages/ -type d -maxdepth 1 -exec cp LICENSE {} \;
# find ./packages/ -type d -maxdepth 1 -exec cp THIRD-PARTY-LICENSE {} \;
# echo "//registry.npmjs.org/:_authToken=$ROLLDOWN_NPM_TOKEN" >> ~/.npmrc
# pnpm lerna publish from-package --no-private --no-git-reset --yes
# env:
# ROLLDOWN_NPM_TOKEN: ${{ secrets.ROLLDOWN_NPM_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .prettierignore
@@ -1,9 +1,9 @@
**/.git
**/node_modules
**/dist/
.yarn
packages/rollup-tests
rollup
crates
target
temp
pnpm-lock.yaml