Move from NPM to PNPM (#19839)

This commit is contained in:
Jon Koops 2023-05-05 16:03:24 +00:00 committed by GitHub
parent e44464d3b8
commit 2a18bcb246
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 7317 additions and 11318 deletions

View file

@ -39,10 +39,6 @@ runs:
name: PhantomJS cache name: PhantomJS cache
uses: ./.github/actions/phantomjs-cache uses: ./.github/actions/phantomjs-cache
- id: npm-cache
name: NPM cache
uses: ./.github/actions/npm-cache
- id: build-keycloak - id: build-keycloak
name: Build Keycloak name: Build Keycloak
shell: bash shell: bash

View file

@ -1,17 +0,0 @@
name: NPM Cache
description: Caches NPM artifacts
runs:
using: composite
steps:
- id: weekly-cache-key
name: Key for weekly rotation of cache
shell: bash
run: echo "key=npm-`date -u "+%Y-%U"`" >> $GITHUB_OUTPUT
- id: cache-npm-repository
name: NPM cache
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ steps.weekly-cache-key.outputs.key }}

View file

@ -1,29 +0,0 @@
name: Setup NPM
description: Sets up Node.js and runs NPM so dependencies are installed.
inputs:
node-version:
description: Node.js version
required: false
default: "18"
working-directory:
description: The working directory where the `package-lock.json` is located.
required: false
default: ""
runs:
using: composite
steps:
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ inputs.node-version }}
check-latest: true
cache: npm
cache-dependency-path: ${{ inputs.working-directory }}/package-lock.json
- name: Install dependencies
working-directory: ${{ inputs.working-directory }}
shell: bash
run: npm ci

48
.github/actions/pnpm-setup/action.yml vendored Normal file
View file

@ -0,0 +1,48 @@
name: Setup PNPM
description: Sets up Node.js and runs PNPM so dependencies are installed.
inputs:
node-version:
description: Node.js version
required: false
default: "18"
working-directory:
description: The working directory where the `pnpm-lock.yaml` file is located.
required: false
default: ""
runs:
using: composite
steps:
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ inputs.node-version }}
check-latest: true
- name: Enable Corepack
shell: bash
run: corepack enable
- name: Get PNPM store directory
id: pnpm-cache
shell: bash
run: |
echo "store-path=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup PNPM cache
with:
# Also cache Cypress binary.
path: |
~/.cache/Cypress
${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('${{ inputs.working-directory }}/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
working-directory: ${{ inputs.working-directory }}
shell: bash
run: pnpm install --frozen-lockfile

View file

@ -24,26 +24,3 @@ updates:
ignore: ignore:
- dependency-name: bootstrap - dependency-name: bootstrap
update-types: ["version-update:semver-major"] update-types: ["version-update:semver-major"]
- package-ecosystem: npm
directory: js
open-pull-requests-limit: 999
rebase-strategy: disabled
versioning-strategy: increase
schedule:
interval: weekly
labels:
- area/dependencies
- team/ui
ignore:
- dependency-name: react
update-types: ["version-update:semver-major"]
- dependency-name: react-dom
update-types: ["version-update:semver-major"]
- dependency-name: "@types/react"
update-types: ["version-update:semver-major"]
- dependency-name: "@types/react-dom"
update-types: ["version-update:semver-major"]
- dependency-name: vite
update-types: ["version-update:semver-major"]
- dependency-name: "@vitejs/plugin-react"
update-types: ["version-update:semver-major"]

View file

@ -69,14 +69,14 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- run: npm run lint --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run lint
working-directory: js working-directory: js
- run: npm run build --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run build
working-directory: js working-directory: js
keycloak-js: keycloak-js:
@ -89,11 +89,11 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- run: npm run build --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run build
working-directory: js working-directory: js
keycloak-masthead: keycloak-masthead:
@ -106,14 +106,14 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- run: npm run lint --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run lint
working-directory: js working-directory: js
- run: npm run build --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run build
working-directory: js working-directory: js
ui-shared: ui-shared:
@ -126,14 +126,14 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- run: npm run lint --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run lint
working-directory: js working-directory: js
- run: npm run build --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run build
working-directory: js working-directory: js
account-ui: account-ui:
@ -146,14 +146,14 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- run: npm run lint --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run lint
working-directory: js working-directory: js
- run: npm run build --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run build
working-directory: js working-directory: js
admin-ui: admin-ui:
@ -166,20 +166,20 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- run: npm run lint --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run lint
working-directory: js working-directory: js
- run: npm run test --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run test
working-directory: js working-directory: js
- run: npm run build --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run build
working-directory: js working-directory: js
- run: npm run cy:check-types --workspace=${{ env.WORKSPACE }} - run: pnpm --filter=${{ env.WORKSPACE }} run cy:check-types
working-directory: js working-directory: js
admin-ui-e2e: admin-ui-e2e:
@ -202,12 +202,12 @@ jobs:
with: with:
chrome-version: stable chrome-version: stable
- uses: ./.github/actions/npm-setup - uses: ./.github/actions/pnpm-setup
with: with:
working-directory: js working-directory: js
- name: Compile Admin Client - name: Compile Admin Client
run: npm run build --workspace=@keycloak/keycloak-admin-client run: pnpm --filter=@keycloak/keycloak-admin-client run build
working-directory: js working-directory: js
- name: Download Keycloak server - name: Download Keycloak server
@ -224,7 +224,7 @@ jobs:
KEYCLOAK_ADMIN_PASSWORD: admin KEYCLOAK_ADMIN_PASSWORD: admin
- name: Start LDAP server - name: Start LDAP server
run: npm run cy:ldap-server --workspace=${{ env.WORKSPACE }} & run: pnpm --filter=${{ env.WORKSPACE }} run cy:ldap-server &
working-directory: js working-directory: js
- name: Run Cypress - name: Run Cypress

View file

@ -50,31 +50,33 @@
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>install-node-and-npm</goal> <goal>install-node-and-pnpm</goal>
</goals> </goals>
</execution> </execution>
<execution> <execution>
<id>npm-ci</id> <id>pnpm-install</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>ci --ignore-scripts</arguments> <arguments>install --frozen-lockfile --ignore-scripts</arguments>
</configuration> </configuration>
</execution> </execution>
<execution> <execution>
<id>npm-build</id> <id>run-build</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>run build --workspace=keycloak-js</arguments> <arguments>run build</arguments>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<nodeVersion>${node.version}</nodeVersion> <nodeVersion>${node.version}</nodeVersion>
<workingDirectory>${js.projectDir}</workingDirectory> <pnpmVersion>${pnpm.version}</pnpmVersion>
<installDirectory>${js.projectDir}</installDirectory>
<workingDirectory>${js.projectDir}/libs/keycloak-js</workingDirectory>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

View file

@ -2,13 +2,15 @@
## Package managers ## Package managers
The default package manager for the Keycloak UI projects is NPM. There are several reasons why NPM is used over other package managers (such as Yarn and PNPM): The default package manager for the Keycloak UI projects is PNPM, we recommend installing it with [Corepack](https://nodejs.org/api/corepack.html) for the best compatibility.
- It comes included with NodeJS by default, meaning it does not have to be installed manually. There are several reasons why PNPM is used over other package managers (such as NPM and Yarn):
- Most contributors are familiar with the NPM ecosystem and tooling.
- We do not use any of the 'advanced' features of other package managers (such as [Yarn's PNP](https://yarnpkg.com/features/pnp)).
If you submit a pull request that changes the dependencies, make sure that you also update the `package-lock.json` as well. - The reasons mentioned in [pnpm vs npm](https://pnpm.io/pnpm-vs-npm), mostly it avoids [silly bugs](https://www.kochan.io/nodejs/pnpms-strictness-helps-to-avoid-silly-bugs.html).
- Unlike [`npm ci`](https://docs.npmjs.com/cli/v9/commands/npm-ci) it preserves the `node_modules` directory between installs, allowing for faster install times (especially in Maven builds).
- Unlike NPM it does not require workspace dependencies to be [explicitly versioned](https://pnpm.io/workspaces#publishing-workspace-packages), simplifying release versioning.
If you submit a pull request that changes the dependencies, make sure that you also update the `pnpm-lock.yaml` as well.
## Typescript ## Typescript

View file

@ -11,16 +11,17 @@
"@patternfly/react-core": "^4.276.8", "@patternfly/react-core": "^4.276.8",
"@patternfly/react-icons": "^4.93.6", "@patternfly/react-icons": "^4.93.6",
"i18next": "^22.4.15", "i18next": "^22.4.15",
"@patternfly/react-table": "^4.113.0",
"i18next-http-backend": "^2.2.0", "i18next-http-backend": "^2.2.0",
"keycloak-js": "999.0.0-SNAPSHOT", "keycloak-js": "workspace:*",
"keycloak-masthead": "999.0.0-SNAPSHOT", "keycloak-masthead": "workspace:*",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hook-form": "^7.43.9", "react-hook-form": "^7.43.9",
"react-i18next": "^12.2.2", "react-i18next": "^12.2.2",
"react-router-dom": "6.11.1", "react-router-dom": "6.11.1",
"ui-shared": "999.0.0-SNAPSHOT" "ui-shared": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"@types/lodash-es": "^4.17.7", "@types/lodash-es": "^4.17.7",

View file

@ -34,17 +34,17 @@
<artifactId>frontend-maven-plugin</artifactId> <artifactId>frontend-maven-plugin</artifactId>
<executions> <executions>
<execution> <execution>
<id>npm-build</id> <id>run-build</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>run build --workspace=account-ui</arguments> <arguments>run build</arguments>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<workingDirectory>../..</workingDirectory> <installDirectory>../..</installDirectory>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>

View file

@ -27,7 +27,7 @@ Now that the Keycloak sever is running it's time to run the development server f
To start the development server run the following command: To start the development server run the following command:
```bash ```bash
npm run dev pnpm run dev
``` ```
Once the process of optimization is done your browser will automatically open your local host on port `8080`. From here you will be redirected to the Keycloak server to authenticate, which you can do with the default username and password (`admin`). Once the process of optimization is done your browser will automatically open your local host on port `8080`. From here you will be redirected to the Keycloak server to authenticate, which you can do with the default username and password (`admin`).
@ -43,7 +43,7 @@ If you want to build the application using Maven and produce a JAR that can be i
Every time you create a commit it should be automatically linted and formatted for you. It is also possible to trigger the linting manually: Every time you create a commit it should be automatically linted and formatted for you. It is also possible to trigger the linting manually:
```bash ```bash
npm run lint pnpm run lint
``` ```
## Integration testing with Cypress ## Integration testing with Cypress
@ -59,13 +59,13 @@ Ensure the Keycloak and development server are running as [outlined previously](
You can run the tests using the interactive graphical user interface using the following command: You can run the tests using the interactive graphical user interface using the following command:
```bash ```bash
npm run cy:open pnpm run cy:open
``` ```
Alternatively the tests can also run headless as follows: Alternatively the tests can also run headless as follows:
``` ```
npm run cy:run pnpm run cy:run
``` ```
For more information about the Cypress command-line interface consult [the documentation](https://docs.cypress.io/guides/guides/command-line). For more information about the Cypress command-line interface consult [the documentation](https://docs.cypress.io/guides/guides/command-line).

View file

@ -60,29 +60,33 @@
} }
}, },
"dependencies": { "dependencies": {
"@keycloak/keycloak-admin-client": "999.0.0-SNAPSHOT", "@keycloak/keycloak-admin-client": "workspace:*",
"@patternfly/patternfly": "^4.224.2", "@patternfly/patternfly": "^4.224.2",
"@patternfly/react-code-editor": "^4.82.115", "@patternfly/react-code-editor": "^4.82.115",
"@patternfly/react-core": "^4.276.8", "@patternfly/react-core": "^4.276.8",
"@patternfly/react-icons": "^4.93.6", "@patternfly/react-icons": "^4.93.6",
"@patternfly/react-styles": "^4.92.6",
"@patternfly/react-table": "^4.113.0", "@patternfly/react-table": "^4.113.0",
"admin-ui": "file:", "admin-ui": "file:",
"dagre": "^0.8.5", "dagre": "^0.8.5",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"file-selector": "^0.6.0",
"flat": "^5.0.2", "flat": "^5.0.2",
"i18next": "^22.4.15", "i18next": "^22.4.15",
"i18next-http-backend": "^2.2.0", "i18next-http-backend": "^2.2.0",
"keycloak-js": "999.0.0-SNAPSHOT", "keycloak-js": "workspace:*",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"monaco-editor": "^0.34.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-dropzone": "^14.2.3", "react-dropzone": "^14.2.3",
"react-error-boundary": "^3.1.4", "react-error-boundary": "^3.1.4",
"react-hook-form": "^7.43.9", "react-hook-form": "^7.43.9",
"react-i18next": "^12.2.2", "react-i18next": "^12.2.2",
"react-router": "^6.11.1",
"react-router-dom": "6.11.1", "react-router-dom": "6.11.1",
"reactflow": "^11.7.0", "reactflow": "^11.7.0",
"ui-shared": "999.0.0-SNAPSHOT", "ui-shared": "workspace:*",
"use-react-router-breadcrumbs": "^4.0.1" "use-react-router-breadcrumbs": "^4.0.1"
}, },
"devDependencies": { "devDependencies": {

View file

@ -78,17 +78,17 @@
<artifactId>frontend-maven-plugin</artifactId> <artifactId>frontend-maven-plugin</artifactId>
<executions> <executions>
<execution> <execution>
<id>npm-build</id> <id>run-build</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>run build --workspace=admin-ui</arguments> <arguments>run build</arguments>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<workingDirectory>../..</workingDirectory> <installDirectory>../..</installDirectory>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>

View file

@ -4,16 +4,16 @@ This app allows you to run a local development version of the Keycloak server.
### Running the Keycloak server ### Running the Keycloak server
First, ensure that all dependencies are installed locally using NPM by running: First, ensure that all dependencies are installed locally using PNPM by running:
```bash ```bash
npm install pnpm install
``` ```
After the dependencies are installed we can start the Keycloak server by running the following command: After the dependencies are installed we can start the Keycloak server by running the following command:
```bash ```bash
npm run start pnpm run start
``` ```
This will download the [Nightly version](https://github.com/keycloak/keycloak/releases/tag/nightly) of the Keycloak server and run it locally on port `8180`. If a previously downloaded version was found in the `server/` directory then that one will be used instead. If you want to download the latest Nightly version you can remove the server directory before running the command to start the server. This will download the [Nightly version](https://github.com/keycloak/keycloak/releases/tag/nightly) of the Keycloak server and run it locally on port `8180`. If a previously downloaded version was found in the `server/` directory then that one will be used instead. If you want to download the latest Nightly version you can remove the server directory before running the command to start the server.
@ -23,7 +23,7 @@ In order for the development version of the Admin UI to work you will have to im
Wait for the Keycloak server to be up and running and run the following command in a new terminal: Wait for the Keycloak server to be up and running and run the following command in a new terminal:
```bash ```bash
npm run import-client pnpm run import-client
``` ```
You'll only have to run this command once, unless you remove the server directory or Keycloak server data. You'll only have to run this command once, unless you remove the server directory or Keycloak server data.

View file

@ -14,6 +14,7 @@
} }
}, },
"dependencies": { "dependencies": {
"@keycloak/keycloak-admin-client": "workspace:*",
"@octokit/rest": "^19.0.7", "@octokit/rest": "^19.0.7",
"@types/gunzip-maybe": "^1.4.0", "@types/gunzip-maybe": "^1.4.0",
"@types/tar-fs": "^2.0.1", "@types/tar-fs": "^2.0.1",

View file

@ -107,20 +107,20 @@ setInterval(() => kcAdminClient.auth(credentials), 58 * 1000); // 58 seconds
To build the source do a build: To build the source do a build:
```bash ```bash
npm run build pnpm run build
``` ```
Start the Keycloak server: Start the Keycloak server:
```bash ```bash
npm run server:start pnpm run server:start
``` ```
If you started your container manually make sure there is an admin user named 'admin' with password 'admin'. If you started your container manually make sure there is an admin user named 'admin' with password 'admin'.
Then start the tests with: Then start the tests with:
```bash ```bash
npm test pnpm test
``` ```
## Supported APIs ## Supported APIs

View file

@ -15,7 +15,7 @@
"build": "wireit", "build": "wireit",
"lint": "wireit", "lint": "wireit",
"test": "wireit", "test": "wireit",
"prepublishOnly": "npm run build" "prepublishOnly": "pnpm run build"
}, },
"wireit": { "wireit": {
"build": { "build": {

View file

@ -47,27 +47,27 @@
<artifactId>frontend-maven-plugin</artifactId> <artifactId>frontend-maven-plugin</artifactId>
<executions> <executions>
<execution> <execution>
<id>npm-prepublish</id> <id>run-build</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>run prepublishOnly --workspace=@keycloak/keycloak-admin-client</arguments> <arguments>run build</arguments>
</configuration> </configuration>
</execution> </execution>
<execution> <execution>
<id>npm-pack</id> <id>pack</id>
<phase>package</phase> <phase>package</phase>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>pack --workspace=@keycloak/keycloak-admin-client --pack-destination=libs/keycloak-admin-client/target</arguments> <arguments>pack --pack-destination=target</arguments>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<workingDirectory>../..</workingDirectory> <installDirectory>../..</installDirectory>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

View file

@ -10,7 +10,7 @@
], ],
"scripts": { "scripts": {
"build": "wireit", "build": "wireit",
"prepublishOnly": "npm run build" "prepublishOnly": "pnpm run build"
}, },
"wireit": { "wireit": {
"build": { "build": {

View file

@ -47,27 +47,27 @@
<artifactId>frontend-maven-plugin</artifactId> <artifactId>frontend-maven-plugin</artifactId>
<executions> <executions>
<execution> <execution>
<id>npm-prepublish</id> <id>run-build</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>run prepublishOnly --workspace=keycloak-js</arguments> <arguments>run build</arguments>
</configuration> </configuration>
</execution> </execution>
<execution> <execution>
<id>npm-pack</id> <id>pack</id>
<phase>package</phase> <phase>package</phase>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>pack --workspace=keycloak-js --pack-destination=libs/keycloak-js/target</arguments> <arguments>pack --pack-destination=target</arguments>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<workingDirectory>../..</workingDirectory> <installDirectory>../..</installDirectory>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

View file

@ -1,6 +1,5 @@
{ {
"name": "keycloak-masthead", "name": "keycloak-masthead",
"version": "999.0.0-SNAPSHOT",
"type": "module", "type": "module",
"main": "./dist/keycloak-masthead.js", "main": "./dist/keycloak-masthead.js",
"types": "./dist/keycloak-masthead.d.ts", "types": "./dist/keycloak-masthead.d.ts",
@ -42,7 +41,8 @@
}, },
"dependencies": { "dependencies": {
"@patternfly/react-core": "^4.276.8", "@patternfly/react-core": "^4.276.8",
"keycloak-js": "999.0.0-SNAPSHOT", "@patternfly/react-styles": "^4.11.8",
"keycloak-js": "workspace:*",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0" "react-dom": "^18.2.0"
}, },

View file

@ -1,6 +1,5 @@
{ {
"name": "ui-shared", "name": "ui-shared",
"version": "999.0.0-SNAPSHOT",
"type": "module", "type": "module",
"main": "./dist/ui-shared.js", "main": "./dist/ui-shared.js",
"types": "./dist/ui-shared.d.ts", "types": "./dist/ui-shared.d.ts",
@ -36,9 +35,10 @@
}, },
"dependencies": { "dependencies": {
"@patternfly/react-core": "^4.276.8", "@patternfly/react-core": "^4.276.8",
"react-hook-form": "7.43.9", "@patternfly/react-icons": "^4.93.6",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0" "react-dom": "^18.2.0",
"react-hook-form": "7.43.9"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.2.4", "@types/react": "^18.2.4",
@ -47,6 +47,7 @@
"rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-peer-deps-external": "^2.2.4",
"vite": "^4.3.4", "vite": "^4.3.4",
"vite-plugin-checker": "^0.6.0", "vite-plugin-checker": "^0.6.0",
"vite-plugin-dts": "^2.3.0" "vite-plugin-dts": "^2.3.0",
"vitest": "^0.31.0"
} }
} }

11141
js/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,14 +1,5 @@
{ {
"name": "root", "name": "root",
"workspaces": [
"libs/ui-shared",
"libs/keycloak-admin-client",
"libs/keycloak-js",
"libs/keycloak-masthead",
"apps/account-ui",
"apps/admin-ui",
"apps/keycloak-server"
],
"scripts": { "scripts": {
"prepare": "cd .. && husky install js/.husky" "prepare": "cd .. && husky install js/.husky"
}, },
@ -28,9 +19,11 @@
"husky": "^8.0.3", "husky": "^8.0.3",
"lint-staged": "^13.2.2", "lint-staged": "^13.2.2",
"prettier": "^2.8.8", "prettier": "^2.8.8",
"tslib": "^2.5.0",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"wireit": "^0.9.5" "wireit": "^0.9.5"
}, },
"packageManager": "pnpm@8.4.0",
"lint-staged": { "lint-staged": {
"*.{js,jsx,mjs,ts,tsx}": "eslint --cache --fix" "*.{js,jsx,mjs,ts,tsx}": "eslint --cache --fix"
} }

7158
js/pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load diff

3
js/pnpm-workspace.yaml Normal file
View file

@ -0,0 +1,3 @@
packages:
- 'apps/*'
- 'libs/**'

View file

@ -13,7 +13,7 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Keycloak JavaScript Parent</name> <name>Keycloak JavaScript Parent</name>
<description>Parent of all JavaScript related code, sets up Node.js and NPM and installs dependencies for all projects in the workspace.</description> <description>Parent of all JavaScript related code, sets up Node.js and PNPM and installs dependencies for all projects in the workspace.</description>
<modules> <modules>
<module>apps/account-ui</module> <module>apps/account-ui</module>
@ -30,21 +30,22 @@
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>install-node-and-npm</goal> <goal>install-node-and-pnpm</goal>
</goals> </goals>
</execution> </execution>
<execution> <execution>
<id>npm-ci</id> <id>pnpm-install</id>
<goals> <goals>
<goal>npm</goal> <goal>pnpm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>ci --ignore-scripts</arguments> <arguments>install --frozen-lockfile --ignore-scripts</arguments>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
<nodeVersion>${node.version}</nodeVersion> <nodeVersion>${node.version}</nodeVersion>
<pnpmVersion>${pnpm.version}</pnpmVersion>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

View file

@ -239,6 +239,7 @@
<!-- Frontend --> <!-- Frontend -->
<node.version>v18.16.0</node.version> <node.version>v18.16.0</node.version>
<pnpm.version>8.4.0</pnpm.version>
</properties> </properties>
<url>http://keycloak.org</url> <url>http://keycloak.org</url>

View file

@ -8,13 +8,6 @@ mvn versions:set -DnewVersion=$NEW_VERSION -DgenerateBackupPoms=false -DgroupId=
# Docker # Docker
sed -i "s/ENV KEYCLOAK_VERSION .*/ENV KEYCLOAK_VERSION $NEW_VERSION/" quarkus/container/Dockerfile sed -i "s/ENV KEYCLOAK_VERSION .*/ENV KEYCLOAK_VERSION $NEW_VERSION/" quarkus/container/Dockerfile
# NPM
cd js
npm --workspace=admin-ui --workspace=account-ui --workspace=keycloak-masthead pkg set "dependencies.keycloak-js=$NEW_VERSION"
npm --workspace=admin-ui pkg set "dependencies.@keycloak/keycloak-admin-client=$NEW_VERSION"
npm --workspace=keycloak-js --workspace=@keycloak/keycloak-admin-client version $NEW_VERSION --allow-same-version --no-git-tag-version
cd -
# Documentation # Documentation
cd docs/documentation cd docs/documentation
SHORT_VERSION=`echo $NEW_VERSION | awk -F '.' '{ print $1"."$2 }'` SHORT_VERSION=`echo $NEW_VERSION | awk -F '.' '{ print $1"."$2 }'`
@ -24,3 +17,8 @@ sed -i 's/:project_versionNpm: .*/:project_versionNpm: '$NEW_VERSION'/' topics/t
sed -i 's/:project_versionDoc: .*/:project_versionDoc: '$SHORT_VERSION'/' topics/templates/document-attributes.adoc sed -i 's/:project_versionDoc: .*/:project_versionDoc: '$SHORT_VERSION'/' topics/templates/document-attributes.adoc
cd - cd -
# Keycloak JS
echo "$(jq '. += {"version": "'$NEW_VERSION'"}' js/libs/keycloak-js/package.json)" > js/libs/keycloak-js/package.json
# Keycloak Admin Client
echo "$(jq '. += {"version": "'$NEW_VERSION'"}' js/libs/keycloak-admin-client/package.json)" > js/libs/keycloak-admin-client/package.json