skuba@9.0.0
skuba 9 is a reasonably large release but it shouldn't be too much trouble to upgrade.
The main changes are:
- ESLint 9 and flat config migration (where
skuba format
should handle most of the work) - Swapping out
ts-node
fortsx
- Some fixes in Buildkite & Docker files
Read the full changelog:
Major Changes
-
deps: ESLint 9 +
typescript-eslint
8 (#1537)This major upgrade bundles the following changes:
-
Migration to flat config format
skuba format
will attempt to migrate your existing.eslintignore
and.eslintrc.js
files to a flateslint.config.js
file.See the migration guide for more information.
-
Some lint rules have been changed or renamed
You will likely need to manually review and adjust your code after running
skuba lint
. -
eslint-plugin-import
has been replaced witheslint-plugin-import-x
To migrate, replace references to
eslint-plugin-import
witheslint-plugin-import-x
, andimport/
rules withimport-x/
.
Wider changes may be necessary if your project has a custom ESLint configuration. Refer to the following resources to get started:
-
-
node, start: Replace
ts-node
withtsx
(#1623)skuba node
andskuba start
now usetsx
instead ofts-node
to execute TypeScript files.tsx
improves support for ESM features like dynamicimport()
s. However, if you use its REPL by runningskuba node
without any arguments, there are a couple regressions to note:- Static
import
declarations are no longer supported. Userequire
andawait import()
instead. - Pasting code into the editor may be more finicky by default. Consider using
.editor
mode.
skuba node <file>
andskuba start
should continue to work as expected, but we have marked this as a major upgrade as it is difficult to comprehensively test every scenario. We strongly recommend to manually verify usage ofskuba node
andskuba start
when you upgrade. - Static
Minor Changes
-
format, lint: Point Docker base images to AWS ECR Public and remove constant
--platform
arguments (#1684)This updates references to
node:
orpython:
Docker images in your Dockerfiles anddocker-compose.yml
files to point to AWS ECR Public to avoid Docker Hub rate limiting. It also removes constant--platform
arguments from Dockerfiles.- FROM --platform=arm64 node:20-alpine AS dev-deps + FROM public.ecr.aws/docker/library/node:20-alpine AS dev-deps
Your Dockerfiles may not be set up to build multi-platform images, so keep in mind that building them locally on an Intel x86 laptop may not yield images that can execute on AWS Graviton instances.
-
format, lint: Remove obsolete
version
field fromdocker-compose.yml
files (#1638) -
format, lint, template: Mount Buildkite
.npmrc
in/tmp/
rather than<workdir>/tmp/
(#1693)This avoids accidental inclusion in Git commits or published artifacts, as per the original intent of this handling.
- secrets: id=npm,src=tmp/.npmrc + secrets: id=npm,src=/tmp/.npmrc - output-path: tmp/ + output-path: /tmp/
-
deps: TypeScript 5.6 (#1655)
This major release includes breaking changes. See the TypeScript 5.6 announcement for more information.
-
format, lint: Fix duplicated YAML merge keys in
.buildkite/
pipelines (#1537)- - <<: *deploy - <<: *docker + - <<: [*deploy, *docker] label: stuff
This change supports standardised YAML parsing across tools such as ESLint; it should not functionally alter the behaviour of your build pipeline.
The bundled patch is fairly conservative and will not attempt to migrate more complex scenarios, such as where there are other keys between the merge keys. Take care with preserving the order of merge keys when manually updating other occurrences.
- - <<: *deploy + - <<: [*deploy, *docker] label: stuff - <<: *docker
-
format, lint: Remove logic to skip autofixing Renovate branches when there is no open pull request (#1687)
Previously, this was put in place to prevent an issue where a Renovate branch could get stuck in an
Edited/Blocked
state without a pull request being raised.skuba's default autofix commits are now ignored in our recommended Renovate configuration.
Patch Changes
-
template/koa-rest-api: Switch from
koa-bodyparser
to@koa/bodyparser
(#1605) -
template/koa-rest-api: Enable secure headers middleware by default (#1601)
See the Koala documentation for more information.
-
template/lambda-sqs-worker-cdk: Comply with AWS tagging guidance (#1643)
-
api: Truncate Buildkite annotations over 1 MiB to resolve
buildkite-agent
crash (#1645) -
deps: validate-npm-package-name ^6.0.0 (#1682)
-
deps: normalize-package-data ^7.0.0 (#1681)
-
deps: esbuild ~0.24.0 (#1671)
-
deps: concurrently ^9.0.0 (#1666)
-
template/lambda-sqs-worker-cdk: Replace custom hooks with
@seek/aws-codedeploy-infra
(#1644) -
template: Point Docker base images to AWS ECR Public and remove constant
--platform
arguments (#1684)