Skip to content

Commit

Permalink
🩹 fix(patch): --editor warning when --editor not used (#2390)
Browse files Browse the repository at this point in the history
- fix: @roots/bud-compress options
- fix: `--editor` warning when `--editor` not used

## Type of change

**PATCH: backwards compatible change**
  • Loading branch information
kellymears committed Jul 26, 2023
1 parent 04be2e3 commit f0addf7
Show file tree
Hide file tree
Showing 16 changed files with 148 additions and 162 deletions.
1 change: 1 addition & 0 deletions config/vitest/alias.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export default {
),
'@roots/bud-cache': path(`sources/@roots/bud-cache/src`),
'@roots/bud-compiler': path(`sources/@roots/bud-compiler/src`),
'@roots/bud-compress': path(`sources/@roots/bud-compress/src`),
'@roots/bud-dashboard': path(`sources/@roots/bud-dashboard/src`),
'@roots/bud-extensions': path(`sources/@roots/bud-extensions/src`),
'@roots/bud-framework': path(`sources/@roots/bud-framework/src`),
Expand Down
1 change: 0 additions & 1 deletion examples/sage/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"type": "module",
"devDependencies": {
"@roots/bud": "workspace:*",
"@roots/bud-prettier": "workspace:*",
"@roots/bud-tailwindcss": "workspace:*",
"@roots/sage": "workspace:*"
}
Expand Down
6 changes: 2 additions & 4 deletions examples/sage/resources/scripts/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,5 @@ const init = () =>

init()

if (import.meta.webpackHot) {
if (import.meta.webpackHot)
import.meta.webpackHot.accept('./components/main.js', init)
}
if (import.meta.webpackHot)
import.meta.webpackHot.accept('./components/main.js', init)
4 changes: 3 additions & 1 deletion sources/@roots/bud-babel/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,9 @@ export default class BabelExtension extends Extension {
plugins: Object.values(this.plugins),
presets: Object.values(this.presets),
root: this.root,
targets: this.app.context.manifest?.browserslist ?? `defaults`,
targets: this.app.context.manifest?.browserslist ?? {
esmodules: true,
},
}
}

Expand Down
19 changes: 7 additions & 12 deletions sources/@roots/bud-compress/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,10 @@
],
"type": "module",
"exports": {
".": {
"import": "./lib/index.js",
"default": "./lib/index.js"
},
"./brotli": {
"import": "./lib/brotli.js",
"default": "./lib/brotli.js"
},
"./gzip": {
"import": "./lib/gzip.js",
"default": "./lib/gzip.js"
}
".": "./lib/index.js",
"./brotli": "./lib/brotli.js",
"./gzip": "./lib/gzip.js",
"./extension": "./lib/extension.js"
},
"typesVersions": {
"*": {
Expand All @@ -73,6 +65,9 @@
],
"gzip": [
"./lib/gzip.d.ts"
],
"extension": [
"./lib/extension.d.ts"
]
}
},
Expand Down
18 changes: 12 additions & 6 deletions sources/@roots/bud-compress/src/brotli.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import type {Options} from '@roots/bud-compress'

import zlib from 'node:zlib'

import {type Bud} from '@roots/bud-framework'
import {Extension} from '@roots/bud-framework/extension'
import {
Expand All @@ -10,21 +14,23 @@ import {
import {deprecated} from '@roots/bud-support/decorators'
import Plugin from 'compression-webpack-plugin'

import type {Options} from './extension.js'

/**
* Brotli compression configuration
*/
@label(`@roots/bud-compress/brotli`)
@plugin(Plugin)
@options<Options>({
algorithm: `brotliCompress`,
compressionOptions: {level: 11},
compressionOptions: {
params: {
[zlib.constants.BROTLI_PARAM_QUALITY]: 11,
},
},
deleteOriginalAssets: false,
filename: `[name].br[query]`,
filename: `[path][name].gz[query]`,
minRatio: 0.8,
test: /\.js$|\.css$|\.html$|\.htm$/,
threshold: 10240,
test: /\.(js|css|html?|svg)$/,
threshold: 0,
})
@disabled
export default class BudBrotli extends Extension<Options, Plugin> {
Expand Down
22 changes: 5 additions & 17 deletions sources/@roots/bud-compress/src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,29 @@
import type {Bud} from '@roots/bud-framework'
import type {Modules} from '@roots/bud-framework'
import type {Bud, Modules} from '@roots/bud-framework'

import {Extension} from '@roots/bud-framework/extension'
import {
bind,
dependsOn,
expose,
label,
} from '@roots/bud-framework/extension/decorators'

/**
* Compression options
*/
export interface Options {
algorithm: string
compressionOptions: Record<string, any>
deleteOriginalAssets: boolean
filename: string
minRatio: number
test: RegExp
threshold: number
}

/**
* Compress static assets
*
* @example
* ```js
* bud.compress.gzip
* bud.compress?.gzip
* .enable()
* .set('filename', '[name].gz[query]')
*
* bud.compress.brotli
* bud.compress?.brotli
* .enable()
* .set('filename', '[name].br[query]')
* ```
*/
@label(`@roots/bud-compress`)
@expose(`compress`)
@dependsOn([`@roots/bud-compress/brotli`, `@roots/bud-compress/gzip`])
export default class BudCompressionExtension extends Extension<any, any> {
public declare brotli: Modules[`@roots/bud-compress/brotli`]
Expand Down
11 changes: 5 additions & 6 deletions sources/@roots/bud-compress/src/gzip.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type {Options} from '@roots/bud-compress'
import type {Bud} from '@roots/bud-framework'

import {Extension} from '@roots/bud-framework/extension'
Expand All @@ -11,21 +12,19 @@ import {
import {deprecated} from '@roots/bud-support/decorators'
import Plugin from 'compression-webpack-plugin'

import type {Options} from './extension.js'

/**
* Gzip compression configuration
*/
@label(`@roots/bud-compress/gzip`)
@plugin(Plugin)
@options({
algorithm: `brotliCompress`,
algorithm: `gzip`,
compressionOptions: {level: 11},
deleteOriginalAssets: false,
filename: `[name].br[query]`,
filename: `[path][name].gz[query]`,
minRatio: 0.8,
test: /\.js$|\.css$|\.html$|\.htm$/,
threshold: 10240,
test: /\.(js|css|html?|svg)$/,
threshold: 0,
})
@disabled
export default class BudGzip extends Extension<Options, Plugin> {
Expand Down
40 changes: 38 additions & 2 deletions sources/@roots/bud-compress/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,46 @@
* @see https://github.com/roots/bud
*/

import type {Options} from './extension.js'
import type BudBrotli from '@roots/bud-compress/brotli'
import type BudCompress from '@roots/bud-compress/extension'
import type BudGzip from '@roots/bud-compress/gzip'
import type {PublicExtensionApi} from '@roots/bud-framework/extension'

import BudCompressionExtension from './extension.js'
import './types'

/**
* Compression options
*/
interface Options {
algorithm: string
compressionOptions: Record<string, any>
deleteOriginalAssets: boolean
filename: string
minRatio: number
test: RegExp
threshold: number
}

interface PublicBrotliAPI extends PublicExtensionApi<BudBrotli> {}
interface PublicGzipAPI extends PublicExtensionApi<BudGzip> {}
interface PublicCompressAPI extends PublicExtensionApi<BudCompress> {
brotli: PublicBrotliAPI
gzip: PublicGzipAPI
}

declare module '@roots/bud-framework' {
interface Bud {
brotli: PublicBrotliAPI
compress: PublicCompressAPI
gzip: PublicGzipAPI
}

interface Modules {
'@roots/bud-compress': PublicCompressAPI
'@roots/bud-compress/brotli': PublicBrotliAPI
'@roots/bud-compress/gzip': PublicGzipAPI
}
}

export default BudCompressionExtension
export type {Options}
26 changes: 0 additions & 26 deletions sources/@roots/bud-compress/src/types.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
import {Bud, factory} from '@repo/test-kit'
import BudCompress from '@roots/bud-compress'
import BudBrotli from '@roots/bud-compress/brotli'
import BudGzip from '@roots/bud-compress/gzip'
import {beforeEach, describe, expect, it, vitest} from 'vitest'

import BudBrotli from './brotli.js'
import Brotli from './brotli.js'
import Compression from './extension.js'
import BudGzip from './gzip.js'

describe(`@roots/bud-compress`, () => {
let bud: Bud
let compress: Compression
let brotli: Brotli
let compress: BudCompress
let brotli: BudBrotli

beforeEach(async () => {
bud = await factory()
brotli = new Brotli(bud)
compress = new Compression(bud)
brotli = new BudBrotli(bud)
compress = new BudCompress(bud)

await bud.extensions.add([BudBrotli, BudGzip])
await compress.register(bud)
})

it(`should be constructable`, () => {
expect(brotli).toBeInstanceOf(Brotli)
expect(brotli).toBeInstanceOf(BudBrotli)
})

it(`should call enabled when config is called`, () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
import {Bud, factory} from '@repo/test-kit'
import BudCompress from '@roots/bud-compress'
import BudBrotli from '@roots/bud-compress/brotli'
import BudGzip from '@roots/bud-compress/gzip'
import {beforeEach, describe, expect, it, test} from 'vitest'

import BudBrotli from './brotli.js'
import BudGzip from './gzip.js'
import Extension from './index.js'

describe(`@roots/bud-compress`, () => {
let bud: Bud
let compress: Extension
let compress: BudCompress

beforeEach(async () => {
bud = await factory()
compress = new Extension(bud)
compress = new BudCompress(bud)
await bud.extensions.add([BudBrotli, BudGzip])
await compress.register(bud)
})

it(`should be constructable`, () => {
expect(Extension).toBeInstanceOf(Function)
expect(BudCompress).toBeInstanceOf(Function)
})

it(`should have gzip interface`, () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
import {Bud, factory} from '@repo/test-kit'
import BudCompress from '@roots/bud-compress'
import BudGzip from '@roots/bud-compress/gzip'
import {beforeEach, describe, expect, it, vitest} from 'vitest'

import Compression from './extension.js'
import Gzip from './gzip.js'

describe(`@roots/bud-compress`, () => {
let bud: Bud
let compress: Compression
let gzip: Gzip
let compress: BudCompress
let gzip: BudGzip

beforeEach(async () => {
bud = await factory()
gzip = new Gzip(bud)
compress = new Compression(bud)
gzip = new BudGzip(bud)
compress = new BudCompress(bud)

await bud.extensions.add([Gzip])
await bud.extensions.add([BudGzip])
await compress.register(bud)
})

it(`should be constructable`, () => {
expect(gzip).toBeInstanceOf(Gzip)
expect(gzip).toBeInstanceOf(BudGzip)
})

it(`should call enabled when config is called`, () => {
Expand Down
Loading

0 comments on commit f0addf7

Please sign in to comment.