Skip to content

Commit

Permalink
Add support for TypeScript config files (.size-limit.ts, `.size-lim…
Browse files Browse the repository at this point in the history
…it.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
  • Loading branch information
aryaemami59 committed Mar 13, 2024
1 parent 4ffac80 commit b36e823
Show file tree
Hide file tree
Showing 55 changed files with 636 additions and 11 deletions.
5 changes: 5 additions & 0 deletions fixtures/cjs-config-file-cjs/.size-limit.cjs
@@ -0,0 +1,5 @@
module.exports = [
{
path: 'index.js'
}
]
5 changes: 5 additions & 0 deletions fixtures/cjs-config-file-cjs/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/cjs-config-file-cjs/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "cjs-config-file-cjs",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
5 changes: 5 additions & 0 deletions fixtures/cjs-config-file-esm/.size-limit.cjs
@@ -0,0 +1,5 @@
export default [
{
path: 'index.js'
}
]
5 changes: 5 additions & 0 deletions fixtures/cjs-config-file-esm/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/cjs-config-file-esm/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "cjs-config-file-esm",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/cts-config-file-cjs/.size-limit.cts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

module.exports = [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/cts-config-file-cjs/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/cts-config-file-cjs/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "cts-config-file-cjs",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/cts-config-file-esm/.size-limit.cts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

export default [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/cts-config-file-esm/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/cts-config-file-esm/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "cts-config-file-esm",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/cts-config-file/.size-limit.cts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

module.exports = [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/cts-config-file/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/cts-config-file/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "cts-config-file",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
5 changes: 5 additions & 0 deletions fixtures/js-config-file-cjs/.size-limit.js
@@ -0,0 +1,5 @@
module.exports = [
{
path: 'index.js'
}
]
5 changes: 5 additions & 0 deletions fixtures/js-config-file-cjs/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/js-config-file-cjs/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "js-config-file-cjs",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
5 changes: 5 additions & 0 deletions fixtures/js-config-file-esm/.size-limit.js
@@ -0,0 +1,5 @@
export default [
{
path: 'index.js'
}
]
5 changes: 5 additions & 0 deletions fixtures/js-config-file-esm/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/js-config-file-esm/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "js-config-file-esm",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
5 changes: 5 additions & 0 deletions fixtures/mjs-config-file-cjs/.size-limit.mjs
@@ -0,0 +1,5 @@
module.exports = [
{
path: 'index.js'
}
]
5 changes: 5 additions & 0 deletions fixtures/mjs-config-file-cjs/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/mjs-config-file-cjs/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "mjs-config-file-cjs",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
5 changes: 5 additions & 0 deletions fixtures/mjs-config-file-esm/.size-limit.mjs
@@ -0,0 +1,5 @@
export default [
{
path: 'index.js'
}
]
5 changes: 5 additions & 0 deletions fixtures/mjs-config-file-esm/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/mjs-config-file-esm/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "mjs-config-file-esm",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/mts-config-file-cjs/.size-limit.mts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

module.exports = [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/mts-config-file-cjs/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/mts-config-file-cjs/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "mts-config-file-cjs",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/mts-config-file-esm/.size-limit.mts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

export default [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/mts-config-file-esm/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/mts-config-file-esm/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "mts-config-file-esm",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/mts-config-file/.size-limit.mts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

export default [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/mts-config-file/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/mts-config-file/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "mts-config-file",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/ts-config-file-cjs/.size-limit.ts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

module.exports = [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/ts-config-file-cjs/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/ts-config-file-cjs/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "ts-config-file-cjs",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/ts-config-file-esm/.size-limit.ts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

export default [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/ts-config-file-esm/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/ts-config-file-esm/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "ts-config-file-esm",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/ts-config-file-with-type-module/.size-limit.ts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

export default [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/ts-config-file-with-type-module/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
10 changes: 10 additions & 0 deletions fixtures/ts-config-file-with-type-module/package.json
@@ -0,0 +1,10 @@
{
"private": true,
"name": "ts-config-file-with-type-module",
"type": "module",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}
7 changes: 7 additions & 0 deletions fixtures/ts-config-file/.size-limit.ts
@@ -0,0 +1,7 @@
import { SizeLimitConfig } from '../../packages/size-limit'

module.exports = [
{
path: 'index.js'
}
] satisfies SizeLimitConfig
5 changes: 5 additions & 0 deletions fixtures/ts-config-file/index.js
@@ -0,0 +1,5 @@
const first = 'first'

const second = 'second'

export { first, second }
9 changes: 9 additions & 0 deletions fixtures/ts-config-file/package.json
@@ -0,0 +1,9 @@
{
"private": true,
"name": "ts-config-file",
"devDependencies": {
"@size-limit/webpack": ">= 0.0.0",
"@size-limit/webpack-why": ">= 0.0.0",
"size-limit": ">= 0.0.0"
}
}

0 comments on commit b36e823

Please sign in to comment.