@roots/bud-build
Version:
bud.js core module
87 lines (75 loc) • 1.98 kB
text/typescript
import type {Factory} from '@roots/bud-build/registry'
import type {Item} from '@roots/bud-framework/services/build'
import isBoolean from '@roots/bud-support/isBoolean'
/**
* CSS loader
*/
export const css: Factory<Item> = async ({makeItem}) =>
makeItem({
ident: `css`,
loader: `css`,
}).setOptions(({hooks: {filter}}) => ({
modules: false,
sourceMap: isBoolean(filter(`build.devtool`))
? filter(`build.devtool`)
: true,
}))
/**
* CSS module loader
*/
export const cssModule: Factory<Item> = async ({makeItem}) =>
makeItem({
ident: `css-module`,
loader: `css`,
}).setOptions(({build, hooks: {filter}}) => ({
importLoaders: build.getRule(`css-module`).getUse().length - 2,
modules: {namedExport: false},
sourceMap: isBoolean(filter(`build.devtool`))
? filter(`build.devtool`)
: true,
}))
/**
* CSV loader
*/
export const csv: Factory<Item> = async ({makeItem}) =>
makeItem().setLoader(`csv`).setIdent(`csv`)
/**
* HTML loader
*/
export const html: Factory<Item> = async ({makeItem}) =>
makeItem().setLoader(`html`).setIdent(`html`)
/**
* Style loader
*/
export const style: Factory<Item> = async ({makeItem}) =>
makeItem().setLoader(`style`).setIdent(`style`)
/**
* Markdown loader
*/
export const md: Factory<Item> = async ({makeItem}) =>
makeItem().setIdent(`md`).setLoader(`md`)
/**
* MiniCss loader
*/
export const minicss: Factory<Item> = async ({makeItem}) =>
makeItem()
.setLoader(`minicss`)
.setIdent(`minicss`)
.setOptions(app => ({
publicPath: app.publicPath(),
}))
/**
* Raw loader
*/
export const raw: Factory<Item> = async ({makeItem}) =>
makeItem().setLoader(`raw`).setIdent(`raw`)
/**
* file-loader
*/
export const file: Factory<Item> = async ({makeItem}) =>
makeItem().setLoader(`file`).setIdent(`file`)
/**
* Yml loader
*/
export const yml: Factory<Item> = async ({makeItem}) =>
makeItem().setLoader(`yml`).setIdent(`yml`)