rancher / dashboard

The Rancher UI
https://rancher.com
Apache License 2.0
463 stars 261 forks source link

Bump `@types/node` to 20.17.6 #12616

Open rak-phillip opened 1 week ago

rak-phillip commented 1 week ago

Summary

This bumps @types/node to 20.17.6.

@types/node was recently targeting node 16, which Dashboard no longer supports as of the Vue 3 migration.

Occurred changes and/or fixed issues

Technical notes summary

Checklist

aalves08 commented 1 week ago

@rak-phillip the key here is the check-plugins-build step for all these PRs for dependencies updates... It failed in a simpler usecase of a newly generated extension: https://github.com/rancher/dashboard/actions/runs/11846587182/job/33014521563?pr=12616#step:5:2370

All extensions migrated to vue3 have this resolution for @types/node:

"@types/node": "~20.10.0"

rak-phillip commented 1 week ago

@rak-phillip the key here is the check-plugins-build step for all these PRs for dependencies updates... It failed in a simpler usecase of a newly generated extension: https://github.com/rancher/dashboard/actions/runs/11846587182/job/33014521563?pr=12616#step:5:2370

All extensions migrated to vue3 have this resolution for @types/node:

"@types/node": "~20.10.0"

@aalves08 Then it's settled, 2.10.8 is the version that we want to target. Although, I do question why we need to set the resolution for @types/node, my expectation is that we should be able to remove the resolution now that we target types that match our actual node version.

aalves08 commented 1 week ago

@rak-phillip the key here is the check-plugins-build step for all these PRs for dependencies updates... It failed in a simpler usecase of a newly generated extension: https://github.com/rancher/dashboard/actions/runs/11846587182/job/33014521563?pr=12616#step:5:2370 All extensions migrated to vue3 have this resolution for @types/node: "@types/node": "~20.10.0"

@aalves08 Then it's settled, 2.10.8 is the version that we want to target. Although, I do question why we need to set the resolution for @types/node, my expectation is that we should be able to remove the resolution now that we target types that match our actual node version.

Hopefully we can, mate! 🤞 🤞 🤞 no it's just a matter of testing it with extensions

aalves08 commented 1 week ago

I've just generated a new extension via yarn create @rancher/extension my-app and the output was "hideous" in terms of dependencies/resolutions....

{
  "name": "my-app",
  "version": "0.1.0",
  "private": false,
  "engines": {
    "node": ">=20"
  },
  "dependencies": {
    "cache-loader": "^4.1.0",
    "color": "4.2.3",
    "ip": "2.0.1",
    "node-polyfill-webpack-plugin": "^3.0.0",
    "@rancher/shell": "^3.0.0"
  },
  "resolutions": {
    "@types/node": "~20.10.0",
    "d3-color": "3.1.0",
    "ejs": "3.1.9",
    "follow-redirects": "1.15.2",
    "glob": "7.2.3",
    "glob-parent": "6.0.2",
    "json5": "2.2.3",
    "@types/lodash": "4.17.5",
    "merge": "2.1.1",
    "node-forge": "1.3.1",
    "nth-check": "2.1.1",
    "qs": "6.11.1",
    "roarr": "7.0.4",
    "semver": "7.5.4",
    "@vue/cli-service/html-webpack-plugin": "^5.0.0"
  },
  "scripts": {
    "dev": "NODE_ENV=dev ./node_modules/.bin/vue-cli-service serve",
    "build": "./node_modules/.bin/vue-cli-service build",
    "clean": "./node_modules/@rancher/shell/scripts/clean",
    "build-pkg": "./node_modules/@rancher/shell/scripts/build-pkg.sh",
    "serve-pkgs": "./node_modules/@rancher/shell/scripts/serve-pkgs",
    "publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish",
    "parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name"
  }
}

We need to clean this up and consolidate it... This hasn't been touched in a bit (I forgot to update them 💦 when I reviewed some dependencies).

In theory it should only be:

{
  "name": "my-app",
  "version": "0.1.0",
  "private": false,
  "engines": {
    "node": ">=20"
  },
  "dependencies": {
    "@rancher/shell": "^3.0.0"
  },
  "scripts": {
    "dev": "NODE_ENV=dev ./node_modules/.bin/vue-cli-service serve",
    "build": "./node_modules/.bin/vue-cli-service build",
    "clean": "./node_modules/@rancher/shell/scripts/clean",
    "build-pkg": "./node_modules/@rancher/shell/scripts/build-pkg.sh",
    "serve-pkgs": "./node_modules/@rancher/shell/scripts/serve-pkgs",
    "publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish",
    "parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name"
  }
}
aalves08 commented 1 week ago

I've yarn linked your branch to a newly generated extension with just the shell dependency:

{
  "name": "my-app",
  "version": "0.1.0",
  "private": false,
  "engines": {
    "node": ">=20"
  },
  "dependencies": {
    "@rancher/shell": "^3.0.0"
  },
  "scripts": {
    "dev": "NODE_ENV=dev ./node_modules/.bin/vue-cli-service serve",
    "build": "./node_modules/.bin/vue-cli-service build",
    "clean": "./node_modules/@rancher/shell/scripts/clean",
    "build-pkg": "./node_modules/@rancher/shell/scripts/build-pkg.sh",
    "serve-pkgs": "./node_modules/@rancher/shell/scripts/serve-pkgs",
    "publish-pkgs": "./node_modules/@rancher/shell/scripts/extension/publish",
    "parse-tag-name": "./node_modules/@rancher/shell/scripts/extension/parse-tag-name"
  }
}

And the build failed with @types/node problems 🤔