Skip to content

Commit

Permalink
build: upgrade stack to pnpm, Node 16 and Lerna 6
Browse files Browse the repository at this point in the history
Use pnpm 8.5+ as package manager to be used on Node 16.13+. Also upgrades Lerna to v6
with nx backend.

As part of the repository overhaul the Vue 2 packages were removed. Starting with JSON
Forms 3.1 they are no longer maintained.

All packages now properly declare all their dependencies. A number of dependencies were
updated in the process, e.g. jest and typedoc.

Other changes:
 - Increases base lib version from ES6 to ES2016.
 - Update Readme, scripts and Github workflows
 - Increase RAM usage for test executions
 
Note: The version constraint of pnpm in the root package.json is set to ">=7.13.4" as
otherwise the Netlify build fails immediatly. It should be set to ">=8.6.2".

Closes #2110
  • Loading branch information
lucas-koehler authored Jul 11, 2023
1 parent 369370a commit 9acbbab
Show file tree
Hide file tree
Showing 80 changed files with 23,890 additions and 38,369 deletions.
9 changes: 5 additions & 4 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.191.1/containers/javascript-node/.devcontainer/base.Dockerfile

# [Choice] Node.js version: 16, 14
ARG VARIANT="14"
# [Choice] Node.js version: 16
ARG VARIANT="16"
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT}

# [Optional] Uncomment this section to install additional OS packages.
Expand All @@ -12,5 +12,6 @@ FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT}
# ARG EXTRA_NODE_VERSION=10
# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}"

# [Optional] Uncomment if you want to install more global node modules
# RUN su node -c "npm install -g <your-package-list-here>"
# Install and configure pnpm
RUN su node -c "npm install -g pnpm@8"
RUN su node -c "pnpm config set store-dir /home/node/.pnpm-store"
6 changes: 3 additions & 3 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"name": "Node.js",
"build": {
"dockerfile": "Dockerfile",
// Update 'VARIANT' to pick a Node version: 14, 16
// Update 'VARIANT' to pick a Node version: 16
"args": {
"VARIANT": "14"
"VARIANT": "16"
}
},
// Set *default* container specific settings.json values on container create.
Expand All @@ -20,7 +20,7 @@
]
},
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "npm ci && npm run init && npm run build",
"postCreateCommand": "pnpm i --frozen-lockfile && pnpm run build",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "node"
}
37 changes: 26 additions & 11 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,29 +16,44 @@ jobs:
name: Run on ${{ matrix.os }}
steps:
- uses: actions/checkout@v2

- name: Setup node
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version: 16

- uses: pnpm/action-setup@v2.2.4
name: Install pnpm
id: pnpm-install
with:
node-version: 14
version: 8
run_install: false

- name: Build
run: |
npm ci
npm run init
npm run build
npm run bundle
pnpm i --frozen-lockfile
pnpm run build
pnpm run doc
pnpm run bundle
- name: Lint
if: matrix.os == 'ubuntu-latest'
run: npm run lint
run: pnpm run lint

- name: Test
if: matrix.os == 'windows-latest'
run: |
npm run test
set NODE_OPTIONS=--max_old_space_size=4096
pnpm run test
- name: Test & Coverage
if: matrix.os == 'ubuntu-latest'
run: |
npm run test-cov
npm run check-format
npm run merge-report && cat coverage/lcov.info
export NODE_OPTIONS=--max_old_space_size=4096
pnpm run test-cov
pnpm run check-format
pnpm run merge-report && cat coverage/lcov.info
- name: Upload Coveralls Report
if: success() && matrix.os == 'ubuntu-latest'
uses: coverallsapp/github-action@master
Expand Down
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
resolution-mode=highest
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v16.20.1
6 changes: 5 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
Expand All @@ -45,5 +48,6 @@
"**/docs": true,
"**/node_modules": true,
"**/lib": true
}
},
"typescript.tsdk": "node_modules/typescript/lib"
}
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ In addition, EclipseSource also offers [professional support](https://jsonforms.

### First time setup

- Install [node.js](https://nodejs.org/) (only Node 14 and npm 6 is currently supported)
- Install [node.js](https://nodejs.org/) (only Node v16.13+ < 17 is currently supported)
- Install pnpm: <https://pnpm.io/installation> (use pnpm 8.6.2+)
- Clone this repository
- Install dependencies: `npm ci`
- Hook up dependencies between packages: `npm run init`
- Install dependencies: `pnpm i --frozen-lockfile`

### VS Code dev container

Expand All @@ -47,13 +47,13 @@ As an alternative to the first time setup, you can use the provided [VS Code dev

### Build & Testing

- Build (all packages): `npm run build`
- Test (all packages): `npm run test`
- Clean (delete `dist` folder of all packages): `npm run clean`
- Run React Vanilla examples: `cd packages/vanilla && npm run dev`
- Run React Material examples: `cd packages/material && npm run dev`
- Run Angular Material examples: `cd packages/angular-material && npm run dev`
- Run Vue Vanilla dev setup: `cd packages/vue/vue-vanilla && npm run serve`
- Build (all packages): `pnpm run build`
- Test (all packages): `pnpm run test`
- Clean (delete `dist` folder of all packages): `pnpm run clean`
- Run React Vanilla examples: `cd packages/vanilla && pnpm run dev`
- Run React Material examples: `cd packages/material && pnpm run dev`
- Run Angular Material examples: `cd packages/angular-material && pnpm run dev`
- Run Vue Vanilla dev setup: `cd packages/vue/vue-vanilla && pnpm run serve`

### Dependency & Release management

Expand Down
13 changes: 2 additions & 11 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
{
"packages": [
"packages/*",
"packages/vue/*",
"packages/vue2/*"
],
"version": "3.1.0",
"nohoist": [
"core-js",
"vue",
"rollup-plugin-vue",
"@vue/test-utils"
]
"npmClient": "pnpm",
"useWorkspaces": true
}
Loading

0 comments on commit 9acbbab

Please sign in to comment.