@roots/sage
Version:
@roots/sage preset for @roots/bud
95 lines (84 loc) • 2.13 kB
text/typescript
import type {Bud} from '@roots/bud-framework'
import {Extension} from '@roots/bud-framework/extension'
import {
bind,
dependsOn,
expose,
label,
} from '@roots/bud-framework/extension/decorators'
import {deprecated} from '@roots/bud-support/decorators'
import type Acorn from '../acorn/index.js'
import type {BladeLoaderExtension} from '../blade-loader/extension.js'
/**
* roots/sage
*
* @see {@link https://github.com/roots/sage}
* @see {@link https://bud.js.org/extensions/sage}
*/
(`@roots/sage`)
([
`@roots/bud-preset-wordpress`,
`@roots/sage/acorn`,
`@roots/sage/blade-loader`,
])
(`sage`)
class Sage extends Extension {
/**
* {@link Acorn}
*/
public get acorn(): Acorn {
return this.app.extensions.get(`@roots/sage/acorn`)
}
/**
* {@link BladeLoaderExtension}
*/
public get blade(): BladeLoaderExtension {
return this.app.extensions.get(`@roots/sage/blade-loader`)
}
/**
* Get unique name for project
*/
public getUniqueName(): string {
return this.app.label !== `sage`
? `@roots/bud/sage/${this.app.label}`
: `@roots/bud/sage`
}
/**
* {@link BladeLoaderExtension.enable}
*/
public processBladeTemplates(value: boolean | Bud = true) {
this.blade.enable(value)
return this
}
/**
* {@link Extension.register}
*/
public override async register(bud: Bud) {
bud
.setPath({
'@dist': `public`,
'@fonts': `@src/fonts`,
'@images': `@src/images`,
'@scripts': `@src/scripts`,
'@src': `resources`,
'@styles': `@src/styles`,
'@views': `@src/views`,
})
.when(bud.isProduction, bud.hash, bud.devtool)
bud.hooks.on(`build.output.uniqueName`, this.getUniqueName)
}
/**
* Set acorn version
*
* @deprecated This function is deprecated. It is unneeded; you can just remove the call.
*/
(
`bud.sage`,
`This function is no longer needed. Remove the call from your configuration.`,
)
public setAcornVersion(version: 'v2' | 'v3') {}
}
export default Sage