Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions .changeset/pnpm-migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
"@commercetools-frontend/ui-kit": minor
"@commercetools-uikit/accessible-button": minor
"@commercetools-uikit/accessible-hidden": minor
"@commercetools-uikit/async-creatable-select-field": minor
"@commercetools-uikit/async-creatable-select-input": minor
"@commercetools-uikit/async-select-field": minor
"@commercetools-uikit/async-select-input": minor
"@commercetools-uikit/avatar": minor
"@commercetools-uikit/buttons": minor
"@commercetools-uikit/calendar-time-utils": minor
"@commercetools-uikit/calendar-utils": minor
"@commercetools-uikit/card": minor
"@commercetools-uikit/checkbox-input": minor
"@commercetools-uikit/collapsible": minor
"@commercetools-uikit/collapsible-motion": minor
"@commercetools-uikit/collapsible-panel": minor
"@commercetools-uikit/constraints": minor
"@commercetools-uikit/creatable-select-field": minor
"@commercetools-uikit/creatable-select-input": minor
"@commercetools-uikit/data-table": minor
"@commercetools-uikit/data-table-manager": minor
"@commercetools-uikit/date-field": minor
"@commercetools-uikit/date-input": minor
"@commercetools-uikit/date-range-field": minor
"@commercetools-uikit/date-range-input": minor
"@commercetools-uikit/date-time-field": minor
"@commercetools-uikit/date-time-input": minor
"@commercetools-uikit/design-system": minor
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to public every package as a fix version?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it does — 5563e55

"@commercetools-uikit/dropdown-menu": minor
"@commercetools-uikit/field-errors": minor
"@commercetools-uikit/field-label": minor
"@commercetools-uikit/field-warnings": minor
"@commercetools-uikit/fields": minor
"@commercetools-uikit/filters": minor
"@commercetools-uikit/flat-button": minor
"@commercetools-uikit/grid": minor
"@commercetools-uikit/hooks": minor
"@commercetools-uikit/i18n": minor
"@commercetools-uikit/icon-button": minor
"@commercetools-uikit/icons": minor
"@commercetools-uikit/input-utils": minor
"@commercetools-uikit/inputs": minor
"@commercetools-uikit/label": minor
"@commercetools-uikit/link": minor
"@commercetools-uikit/link-button": minor
"@commercetools-uikit/loading-spinner": minor
"@commercetools-uikit/localized-money-input": minor
"@commercetools-uikit/localized-multiline-text-field": minor
"@commercetools-uikit/localized-multiline-text-input": minor
"@commercetools-uikit/localized-rich-text-input": minor
"@commercetools-uikit/localized-text-field": minor
"@commercetools-uikit/localized-text-input": minor
"@commercetools-uikit/localized-utils": minor
"@commercetools-uikit/messages": minor
"@commercetools-uikit/money-field": minor
"@commercetools-uikit/money-input": minor
"@commercetools-uikit/multiline-text-field": minor
"@commercetools-uikit/multiline-text-input": minor
"@commercetools-uikit/notifications": minor
"@commercetools-uikit/number-field": minor
"@commercetools-uikit/number-input": minor
"@commercetools-uikit/pagination": minor
"@commercetools-uikit/password-field": minor
"@commercetools-uikit/password-input": minor
"@commercetools-uikit/primary-action-dropdown": minor
"@commercetools-uikit/primary-button": minor
"@commercetools-uikit/progress-bar": minor
"@commercetools-uikit/quick-filters": minor
"@commercetools-uikit/radio-field": minor
"@commercetools-uikit/radio-input": minor
"@commercetools-uikit/rich-text-input": minor
"@commercetools-uikit/rich-text-utils": minor
"@commercetools-uikit/search-select-field": minor
"@commercetools-uikit/search-select-input": minor
"@commercetools-uikit/search-text-input": minor
"@commercetools-uikit/secondary-button": minor
"@commercetools-uikit/secondary-icon-button": minor
"@commercetools-uikit/select-field": minor
"@commercetools-uikit/select-input": minor
"@commercetools-uikit/select-utils": minor
"@commercetools-uikit/selectable-search-input": minor
"@commercetools-uikit/spacings": minor
"@commercetools-uikit/spacings-inline": minor
"@commercetools-uikit/spacings-inset": minor
"@commercetools-uikit/spacings-inset-squish": minor
"@commercetools-uikit/spacings-stack": minor
"@commercetools-uikit/stamp": minor
"@commercetools-uikit/tag": minor
"@commercetools-uikit/text": minor
"@commercetools-uikit/text-field": minor
"@commercetools-uikit/text-input": minor
"@commercetools-uikit/time-field": minor
"@commercetools-uikit/time-input": minor
"@commercetools-uikit/toggle-input": minor
"@commercetools-uikit/tooltip": minor
"@commercetools-uikit/utils": minor
"@commercetools-uikit/view-switcher": minor
---

internal: package manager migrated from Yarn 3 to pnpm; no consumer-facing changes.
48 changes: 33 additions & 15 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,41 +22,59 @@ jobs:
- name: Checkout
uses: actions/checkout@v6

- name: Install pnpm
uses: pnpm/action-setup@v4

- name: Setup Node (uses version in .nvmrc)
uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'

- name: Get yarn cache
id: yarn-cache
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
- name: Get pnpm store
id: pnpm-store
run: echo "dir=$(pnpm store path)" >> $GITHUB_OUTPUT

- uses: actions/cache@v5
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock', 'patches/*.patch') }}
path: ${{ steps.pnpm-store.outputs.dir }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml', 'patches/*.patch') }}
restore-keys: |
${{ runner.os }}-yarn-
${{ runner.os }}-pnpm-

- name: Install dependencies
run: yarn install --immutable
run: pnpm install --frozen-lockfile

- name: Check for unmet constraints (fix w/ "yarn constraints --fix")
run: yarn constraints
- name: Check for unmet constraints
run: node scripts/check-workspace-constraints.js

- name: Building packages
run: yarn build
run: pnpm build

- name: Running static type checking
run: yarn typecheck
run: pnpm typecheck

# Gates phantom-dep regressions introduced by pnpm's shamefully-hoist
# posture (see FEC-924 risk #4). Runs publint per published package
# against the packed tarball; fails on any publint error.
- name: Running publint check
run: pnpm lint:publint

- name: Running linters and tests
run: yarn run jest --projects jest.{eslint,test,ts-test,bundle}.config.js --reporters github-actions
run: pnpm jest --projects jest.{eslint,test,ts-test,bundle}.config.js --reporters github-actions
env:
CI: true

- name: Building Visual Regression Tests application for UI components
run: yarn visual-testing-app:build
run: pnpm visual-testing-app:build

# Puppeteer's postinstall hook downloads Chrome to ~/.cache/puppeteer.
# Under pnpm, the postinstall script's side-effects are cached in the pnpm
# store (which is restored from the GitHub Actions cache), so pnpm skips
# re-running it. But Chrome lives outside node_modules / the pnpm store,
# so the binary is missing on the runner. Install it explicitly here so
# the visual regression tests can find it.
- name: Install Puppeteer's Chrome
run: pnpm exec puppeteer browsers install chrome

- name: Running Visual Regression Tests for UI components
# aa-exec:
Expand All @@ -65,7 +83,7 @@ jobs:
# that made it so that puppeteers chromium installation is not whitelisted,
# which made it so that the chromium sandbox is not available and puppeteer errors out,
# so we need to specify that we are using app armor's chrome profile when running puppeteer (https://github.com/mermaid-js/mermaid-cli/issues/730#issuecomment-2408615110)
run: aa-exec --profile=chrome -- yarn vrt:components
run: aa-exec --profile=chrome -- pnpm vrt:components
timeout-minutes: 20
env:
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
Expand All @@ -78,7 +96,7 @@ jobs:
shell: bash

- name: Checking bundle size
run: yarn bundlesize
run: pnpm bundlesize
env:
BUNDLEWATCH_GITHUB_TOKEN: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
CI_REPO_OWNER: ${{ github.repository_owner }}
Expand Down
34 changes: 21 additions & 13 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,23 @@ jobs:
# https://github.bokerqi.topmunity/t/action-does-not-trigger-another-on-push-tag-action/17148/8
token: ${{ steps.generate_github_token.outputs.token }}

- name: Install pnpm
uses: pnpm/action-setup@v4

- name: Setup Node (uses version in .nvmrc)
uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
# Disable v6's built-in package-manager auto-cache: combined with
# `registry-url`, it picks up the runner's pre-installed yarn 1
# instead of pnpm and fails before any of our steps run. We manage
# the pnpm store cache explicitly via actions/cache below.
package-manager-cache: false

- name: Get yarn cache
id: yarn-cache
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
- name: Get pnpm store
id: pnpm-store
run: echo "dir=$(pnpm store path)" >> $GITHUB_OUTPUT

- name: Verify npm version
run: |
Expand All @@ -46,19 +54,19 @@ jobs:

- uses: actions/cache@v5
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock', 'patches/*.patch') }}
path: ${{ steps.pnpm-store.outputs.dir }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml', 'patches/*.patch') }}
restore-keys: |
${{ runner.os }}-yarn-
${{ runner.os }}-pnpm-

- name: Install dependencies
run: yarn install --immutable
run: pnpm install --frozen-lockfile

- name: Building packages
run: yarn build
run: pnpm build

- name: Building package READMEs
run: yarn generate-readmes
run: pnpm generate-readmes
env:
CI: true

Expand All @@ -74,8 +82,8 @@ jobs:
uses: changesets/action@v1.7.0
with:
commit: 'ci(changesets): version packages'
publish: yarn changeset publish
version: yarn changeset:version-and-format
publish: pnpm changeset publish
version: pnpm changeset:version-and-format
createGithubReleases: false
commitMode: 'github-api'
env:
Expand All @@ -98,7 +106,7 @@ jobs:
git fetch origin main
git reset --hard origin/main
git clean -fd
yarn changeset version --snapshot canary
yarn changeset publish --tag canary
pnpm changeset version --snapshot canary
pnpm changeset publish --tag canary
env:
GITHUB_TOKEN: ${{ steps.generate_github_token.outputs.token }}
14 changes: 2 additions & 12 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
**/.DS_Store

# Build output
Expand Down Expand Up @@ -58,16 +56,8 @@ typings/
# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# pnpm
.pnpm-debug.log

# dotenv environment variables file
.env
Expand Down
2 changes: 1 addition & 1 deletion .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -1 +1 @@
yarn commitlint --edit $1
pnpm commitlint --edit $1
2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1 @@
yarn generate-package-json --all-workspace-packages && yarn lint-staged
pnpm generate-package-json --all-workspace-packages && pnpm lint-staged
3 changes: 3 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Hoist all dependencies to root node_modules (matches previous Yarn behavior).
# TODO: tighten with public-hoist-pattern[] for specific packages later.
shamefully-hoist=true
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's good to not mix this in.

52 changes: 0 additions & 52 deletions .yarn/plugins/@yarnpkg/plugin-constraints.cjs

This file was deleted.

Loading
Loading