Skip to content

Commit b36e823

Browse files
authored
Add support for TypeScript config files (.size-limit.ts, .size-limit.mts, .size-limit.cts) (#355)
* Add `jiti` to dependencies * Add support for loading TypeScript config files dynamically * Test all config file extension/module type combos with fixtures. * Manually define `__filename` * Increase the `timeout` to accommodate the new added number of tests * Shorten test descriptions in `get-config.test.js` * Add very loose type definitions * Add types definition file to `package.json` * Copy documentation from `README.md` and paste as JSDocs * Add `SizeLimitConfig` type to `index.d.ts` * Fix minor type issue in JSDocs * Add `satisfies SizeLimitConfig` to TS fixtures * Rename `_jiti` to `buildJiti` in `get-config.js` * Remove manually defined `__filename` * Run ESLint fix on all files * Change `Config` from a `type` to an `interface` * Rename `Config` interface to `Check` * Add new lines between properties of `Check` interface * Run ESLint fix on all files * Add `sizeLimitAPI` function to `index.d.ts` * Dynamically import `jiti` - Dynamically import `jiti` to avoid unnecessary initialization for non TS config files * Exclude `.d.ts` files from coverage * Replace the deprecated `test.watchExclude` with `server.watch.ignored` * Retry failed tests during CI * Add JSDocs for the `Check` interface * Disable `fileParallelism` during CI * Run ESLint fix on all files
1 parent 4ffac80 commit b36e823

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+636
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = [
2+
{
3+
path: 'index.js'
4+
}
5+
]

fixtures/cjs-config-file-cjs/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "cjs-config-file-cjs",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default [
2+
{
3+
path: 'index.js'
4+
}
5+
]

fixtures/cjs-config-file-esm/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "cjs-config-file-esm",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
module.exports = [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/cts-config-file-cjs/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "cts-config-file-cjs",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
export default [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/cts-config-file-esm/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "cts-config-file-esm",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
module.exports = [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/cts-config-file/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }

fixtures/cts-config-file/package.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "cts-config-file",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = [
2+
{
3+
path: 'index.js'
4+
}
5+
]

fixtures/js-config-file-cjs/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "js-config-file-cjs",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default [
2+
{
3+
path: 'index.js'
4+
}
5+
]

fixtures/js-config-file-esm/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "js-config-file-esm",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = [
2+
{
3+
path: 'index.js'
4+
}
5+
]

fixtures/mjs-config-file-cjs/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "mjs-config-file-cjs",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default [
2+
{
3+
path: 'index.js'
4+
}
5+
]

fixtures/mjs-config-file-esm/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "mjs-config-file-esm",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
module.exports = [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/mts-config-file-cjs/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "mts-config-file-cjs",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
export default [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/mts-config-file-esm/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "mts-config-file-esm",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
export default [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/mts-config-file/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }

fixtures/mts-config-file/package.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "mts-config-file",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
module.exports = [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/ts-config-file-cjs/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "ts-config-file-cjs",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
export default [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/ts-config-file-esm/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "ts-config-file-esm",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
export default [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"private": true,
3+
"name": "ts-config-file-with-type-module",
4+
"type": "module",
5+
"devDependencies": {
6+
"@size-limit/webpack": ">= 0.0.0",
7+
"@size-limit/webpack-why": ">= 0.0.0",
8+
"size-limit": ">= 0.0.0"
9+
}
10+
}
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { SizeLimitConfig } from '../../packages/size-limit'
2+
3+
module.exports = [
4+
{
5+
path: 'index.js'
6+
}
7+
] satisfies SizeLimitConfig

fixtures/ts-config-file/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const first = 'first'
2+
3+
const second = 'second'
4+
5+
export { first, second }

fixtures/ts-config-file/package.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"private": true,
3+
"name": "ts-config-file",
4+
"devDependencies": {
5+
"@size-limit/webpack": ">= 0.0.0",
6+
"@size-limit/webpack-why": ">= 0.0.0",
7+
"size-limit": ">= 0.0.0"
8+
}
9+
}

0 commit comments

Comments
 (0)