Releases: seek-oss/sku
[email protected]
Minor Changes
-
Change
prettier
dependency range from minor-version flexible to patch-version flexible. Updateprettier
dependency to~3.5.0
. (#1210)This change may result in some code formatting changes. Please review the Prettier 3.5.0 release notes.
-
vite
: Emit start time metric forsku start
(#1214) -
Update TypeScript dependency from
~5.6.0
to~5.8.0
(#1095)These 2 major release include breaking changes. See the TypeScript 5.7 and TypeScript 5.8 announcements for more information.
Patch Changes
-
vite
: Emit more accurate HMR rebuild timing metrics duringsku start
(#1211)Previously this metric was captured server-side by relying on plugin hooks firing in the correct order. This proved to be inaccurate, so we now capture this metric client-side and send the data back to the dev server.
-
Update
eslint-config-seek
dependency to^14.4.0
(#1208)
[email protected]
Patch Changes
- vite build (experimental): Allowing specific cjs package interop and support publicPath values (#1203)
[email protected]
Minor Changes
- Vite support is currently being internally prototyped. This is not ready for use in applications, stay tuned for updates in future releases. (#1192)
Patch Changes
[email protected]
Patch Changes
sku test
: Fixes a bug where extra CLI arguments were not being passed through tojest
(#1193)
[email protected]
Patch Changes
-
Fix incorrectly formatted logs (#1185)
-
Change internal handling of the
sku
config. (#1175)This has resulted in a slight change to the output of the eslint file.
This file is generated by sku so no changes are needed.[!NOTE]
If you are usingdangerouslySetESLintConfig
to change your eslint config it will only work if the option is set in asku.config.[ts|js|mjs]
file.
Custom config paths that setdangerouslySetESLintConfig
will have no effect on the resolved eslint config. -
Ignore correct eslint config file (#1177)
-
Fix
.webp
and.avif
support (#1181) -
Fix missing support for mocking
.bmp
file imports in jest tests (#1187)
[email protected]
[email protected]
Patch Changes
- Reduce config loading log noise (#1169)
[email protected]
Patch Changes
- Fix release (#1165)
[email protected]
Major Changes
-
Migrating
sku
to ESM from commonjs (#1156)BREAKING CHANGE:
Most of
sku
s API entrypoints are now ESM. Consumers that use the following API entrypoints may need to convert some of their configuration files to ESM:
sku/webpack-plugin
is now an ES module and has to be imported as such.If you are using
require()
to importsku/webpack-plugin
you will have to change it toimport
.- const SkuWebpackPlugin = require('sku/webpack-plugin'); + import SkuWebpackPlugin from 'sku/webpack-plugin';
[!NOTE]
The file that is importingsku/webpack-plugin
must also be an ES module so further changes may be required.
sku/config/eslint
is a new entrypoint that exposessku
's flat ESLint configuration. It now only supports ESM. -
Update
eslint-config-seek
to v14 (#1156)Alongside the migration to ESLint v9,
eslint-config-seek
has been updated to v14 which supports the new flat config format.Some lint rules have been changed or renamed, so consumers should run
sku format
to automatically update their code to conform to the new rules. You may still need to manually review and adjust your code after runningsku format
as not all issues are auto-fixable.[!NOTE]
You may need to migrate your ESLint configuration before runningsku format
.
Please read the release notes for more information on how to migrate your ESLint configuration.Additionally,
eslint-plugin-import
has been replaced witheslint-plugin-import-x
. You should replace any references toeslint-plugin-import
witheslint-plugin-import-x
and anyimport/
rules withimport-x/
.See the
eslint-config-seek
release notes for more information. -
Change the CLI to commander.js. (#1156)
BREAKING CHANGE
sku
now uses commander.js for its CLI. The CLI options and commands are now more narrowly defined and scoped. Some combinations of options that were previously possible may no longer work.The new
-h, --help
flag now shows the help output generated by commander.js and shows the available commands and options.The following option flags are now available in their respective scope
Global options
- the
-e, --environment
option - the
-c, --config
option - the
-d, --debug
option - new: the
-h, --help
option - new: the
-v, --version
option
Scoped options
- the
build
,build-ssr
,start
, andstart-ssr
commands have the following options-s, --stats
option
- the
serve
command now has the following options--port
option--site
option
- the
translation compile
command now has the following options-w, --watch
option
- the
translation push
command now has the following option--delete-unused-keys
option
- the
init
command now has the following options-p, --package-manager
option. This has changed from--packageManager
preferringkebab-case
overcamelCase
for option flags.--verbose
option
- the
-
Update to ESLint v9 (#1156)
ESLint v9 defaults to the new flat config format. As such,
sku
's ESLint config has been migrated to this new format, and consumers will need to migrate any custom overrides set viadangerouslySetESLintConfig
to the new format as well.For example, if you are overriding an ESLint rule, you can migrate to the new config format like so:
dangerouslySetESLintConfig: (config) => { - return { - ...config, - rules: { - ...config.rules, - 'no-console': 'off' - } - }; + return [ + ...config, + { + rules: { + 'no-console': 'off' + } + } + ]; }
More complicated overrides such as the use of plugins or modification of parser options may require a more involved migration. Please refer to the migration guide for more information.
Additionally, the
.eslintignore
file is no longer used by ESLint. Instead, ignore patterns are now configured directly in your ESLint config file. Sincesku
controls your ESLint config, you can configure any custom ignore patterns in your sku config via the neweslintIgnore
option.For example:
import type { SkuConfig } from 'sku'; export default { eslintIgnore: ['a-large-file.js', '**/generated/'], } satisfies SkuConfig;
[!TIP]
Upon installation,sku
will automatically try to migrate any custom entries in your.eslintignore
to the neweslintIgnore
configuration.
This migration must be done locally, it will not be committed to your repository from CI.
If this migration fails, you will need to manually migrate any custom ignore entries.[!IMPORTANT]
Changes to ignore patterns or other ESLint configuration viaeslintIgnore
anddangerouslySetESLintConfig
respectively will no longer be reflected directly in youreslint.config.js
file.
Thesku/config/eslint
entrypoint handles the composition of these configurations.
The best way to visualize your final ESLint configuration is use the official ESLint config inspector. -
Drop support for Node.js versions below 20.18.2 (#1156)
BREAKING CHANGE:
The minimum supported Node.js version is now 20.18.2. Consumers must upgrade to Node.js v20.18.2 or later.
-
Drop support for React 17.x (#1156)
BREAKING CHANGE
React 17 is no longer supported. Consumers will need to upgrade to React 18. Consumers still on v17 should follow the How to Upgrade to React 18 guide. Additionally, ensure any dependencies that rely on React are compatible with React 18.
Minor Changes
-
Expose
sku
's ESLint config undersku/config/eslint
entrypoint (#1156)This entrypoint is used by sku to configure ESLint. Most consumers will not need to use this entrypoint directly.
-
Add support for
.mjs
sku configuration files (#1156)In addition to
sku.config.ts
andsku.config.js
, sku will now also look for asku.config.mjs
file when attempting to resolve your application's configuration file. -
Update
prettier
from^2.8.8
to^3.4.1
Prettier V3 brings various code formatting changes than can be automatically fixed by running
sku format
.
Patch Changes
sku init
: Ensure latest React 18 version is installed in new projects as React 19 is not yet supported (#1156)
[email protected]
Patch Changes
-
sku init
: Add apnpm.onlyBuiltDependencies
field to thepackage.json
file ifpnpm
v10 is detected (#1160)As of
pnpm
v10, dependency lifecycle scripts are no longer run by default. Instead, explicit permission must be given on a per-dependency basis.New
sku
projects will have this field added automatically ifpnpm
v10 is detected in order to ensuresku
and its dependencies can run necessary lifecycle scripts after installation.