@roots/bud-build 6.6.5 → 6.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -19
- package/docs/exports.md +13 -0
- package/docs/rules.md +32 -0
- package/lib/config/bail.d.ts +2 -2
- package/lib/config/bail.d.ts.map +1 -1
- package/lib/config/bail.js +1 -1
- package/lib/config/bail.js.map +1 -1
- package/lib/config/cache.d.ts +2 -2
- package/lib/config/cache.d.ts.map +1 -1
- package/lib/config/cache.js +1 -1
- package/lib/config/cache.js.map +1 -1
- package/lib/config/context.d.ts +2 -2
- package/lib/config/context.d.ts.map +1 -1
- package/lib/config/context.js +1 -1
- package/lib/config/context.js.map +1 -1
- package/lib/config/dependencies.d.ts +3 -0
- package/lib/config/dependencies.d.ts.map +1 -0
- package/lib/config/dependencies.js +5 -0
- package/lib/config/dependencies.js.map +1 -0
- package/lib/config/devtool.d.ts +2 -2
- package/lib/config/devtool.d.ts.map +1 -1
- package/lib/config/devtool.js +1 -1
- package/lib/config/devtool.js.map +1 -1
- package/lib/config/entry.d.ts +3 -0
- package/lib/config/entry.d.ts.map +1 -0
- package/lib/config/entry.js +2 -0
- package/lib/config/entry.js.map +1 -0
- package/lib/config/experiments.d.ts +2 -2
- package/lib/config/experiments.d.ts.map +1 -1
- package/lib/config/experiments.js +1 -1
- package/lib/config/experiments.js.map +1 -1
- package/lib/config/externals.d.ts +3 -0
- package/lib/config/externals.d.ts.map +1 -0
- package/lib/config/externals.js +2 -0
- package/lib/config/externals.js.map +1 -0
- package/lib/config/externalsType.d.ts +3 -0
- package/lib/config/externalsType.d.ts.map +1 -0
- package/lib/config/externalsType.js +2 -0
- package/lib/config/externalsType.js.map +1 -0
- package/lib/config/index.d.ts +35 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/config/index.js +27 -0
- package/lib/config/index.js.map +1 -0
- package/lib/config/infrastructureLogging.d.ts +2 -2
- package/lib/config/infrastructureLogging.d.ts.map +1 -1
- package/lib/config/infrastructureLogging.js +12 -3
- package/lib/config/infrastructureLogging.js.map +1 -1
- package/lib/config/loader.d.ts +3 -0
- package/lib/config/loader.d.ts.map +1 -0
- package/lib/config/loader.js +2 -0
- package/lib/config/loader.js.map +1 -0
- package/lib/config/mode.d.ts +3 -0
- package/lib/config/mode.d.ts.map +1 -0
- package/lib/config/mode.js +2 -0
- package/lib/config/mode.js.map +1 -0
- package/lib/config/module.d.ts +2 -6
- package/lib/config/module.d.ts.map +1 -1
- package/lib/config/module.js +20 -18
- package/lib/config/module.js.map +1 -1
- package/lib/config/name.d.ts +3 -0
- package/lib/config/name.d.ts.map +1 -0
- package/lib/config/name.js +2 -0
- package/lib/config/name.js.map +1 -0
- package/lib/config/node.d.ts +3 -0
- package/lib/config/node.d.ts.map +1 -0
- package/lib/config/node.js +2 -0
- package/lib/config/node.js.map +1 -0
- package/lib/config/optimization.d.ts +2 -2
- package/lib/config/optimization.d.ts.map +1 -1
- package/lib/config/optimization.js +8 -7
- package/lib/config/optimization.js.map +1 -1
- package/lib/config/output/assetModuleFilename.d.ts +8 -0
- package/lib/config/output/assetModuleFilename.d.ts.map +1 -0
- package/lib/config/output/assetModuleFilename.js +2 -0
- package/lib/config/output/assetModuleFilename.js.map +1 -0
- package/lib/config/output/chunkFilename.d.ts +8 -0
- package/lib/config/output/chunkFilename.d.ts.map +1 -0
- package/lib/config/output/chunkFilename.js +4 -0
- package/lib/config/output/chunkFilename.js.map +1 -0
- package/lib/config/output/filename.d.ts +8 -0
- package/lib/config/output/filename.d.ts.map +1 -0
- package/lib/config/output/filename.js +4 -0
- package/lib/config/output/filename.js.map +1 -0
- package/lib/config/output/index.d.ts +3 -0
- package/lib/config/output/index.d.ts.map +1 -0
- package/lib/config/output/index.js +18 -0
- package/lib/config/output/index.js.map +1 -0
- package/lib/config/parallelism.d.ts +3 -0
- package/lib/config/parallelism.d.ts.map +1 -0
- package/lib/config/parallelism.js +3 -0
- package/lib/config/parallelism.js.map +1 -0
- package/lib/config/performance.d.ts +3 -0
- package/lib/config/performance.d.ts.map +1 -0
- package/lib/config/performance.js +2 -0
- package/lib/config/performance.js.map +1 -0
- package/lib/config/plugins.d.ts +3 -0
- package/lib/config/plugins.d.ts.map +1 -0
- package/lib/config/plugins.js +2 -0
- package/lib/config/plugins.js.map +1 -0
- package/lib/config/profile.d.ts +3 -0
- package/lib/config/profile.d.ts.map +1 -0
- package/lib/config/profile.js +2 -0
- package/lib/config/profile.js.map +1 -0
- package/lib/config/recordsPath.d.ts +3 -0
- package/lib/config/recordsPath.d.ts.map +1 -0
- package/lib/config/recordsPath.js +2 -0
- package/lib/config/recordsPath.js.map +1 -0
- package/lib/config/resolve.d.ts +2 -3
- package/lib/config/resolve.d.ts.map +1 -1
- package/lib/config/resolve.js +16 -9
- package/lib/config/resolve.js.map +1 -1
- package/lib/config/stats.d.ts +3 -0
- package/lib/config/stats.d.ts.map +1 -0
- package/lib/config/stats.js +17 -0
- package/lib/config/stats.js.map +1 -0
- package/lib/config/target.d.ts +3 -0
- package/lib/config/target.d.ts.map +1 -0
- package/lib/config/target.js +4 -0
- package/lib/config/target.js.map +1 -0
- package/lib/handlers/index.d.ts +19 -0
- package/lib/handlers/index.d.ts.map +1 -0
- package/lib/handlers/index.js +6 -0
- package/lib/handlers/index.js.map +1 -0
- package/lib/handlers/items/items.d.ts +69 -0
- package/lib/handlers/items/items.d.ts.map +1 -0
- package/lib/handlers/items/items.js +93 -0
- package/lib/handlers/items/items.js.map +1 -0
- package/lib/handlers/loaders/loaders.d.ts +12 -0
- package/lib/handlers/loaders/loaders.d.ts.map +1 -0
- package/lib/handlers/loaders/loaders.js +11 -0
- package/lib/handlers/loaders/loaders.js.map +1 -0
- package/lib/handlers/register.d.ts +18 -0
- package/lib/handlers/register.d.ts.map +1 -0
- package/lib/handlers/register.js +28 -0
- package/lib/handlers/register.js.map +1 -0
- package/lib/handlers/rules/css.d.ts +3 -0
- package/lib/handlers/rules/css.d.ts.map +1 -0
- package/lib/handlers/rules/css.js +5 -0
- package/lib/handlers/rules/css.js.map +1 -0
- package/lib/handlers/rules/css.module.d.ts +3 -0
- package/lib/handlers/rules/css.module.d.ts.map +1 -0
- package/lib/handlers/rules/css.module.js +5 -0
- package/lib/handlers/rules/css.module.js.map +1 -0
- package/lib/handlers/rules/csv.d.ts +2 -8
- package/lib/handlers/rules/csv.d.ts.map +1 -1
- package/lib/handlers/rules/csv.js +3 -9
- package/lib/handlers/rules/csv.js.map +1 -1
- package/lib/handlers/rules/font.d.ts +3 -0
- package/lib/handlers/rules/font.d.ts.map +1 -0
- package/lib/handlers/rules/font.inline.d.ts +3 -0
- package/lib/handlers/rules/font.inline.d.ts.map +1 -0
- package/lib/handlers/rules/font.inline.js +6 -0
- package/lib/handlers/rules/font.inline.js.map +1 -0
- package/lib/handlers/rules/font.js +5 -0
- package/lib/handlers/rules/font.js.map +1 -0
- package/lib/handlers/rules/html.d.ts +3 -0
- package/lib/handlers/rules/html.d.ts.map +1 -0
- package/lib/handlers/rules/html.js +5 -0
- package/lib/handlers/rules/html.js.map +1 -0
- package/lib/handlers/rules/image.d.ts +3 -0
- package/lib/handlers/rules/image.d.ts.map +1 -0
- package/lib/handlers/rules/image.inline.d.ts +3 -0
- package/lib/handlers/rules/image.inline.d.ts.map +1 -0
- package/lib/handlers/rules/image.inline.js +6 -0
- package/lib/handlers/rules/image.inline.js.map +1 -0
- package/lib/handlers/rules/image.js +5 -0
- package/lib/handlers/rules/image.js.map +1 -0
- package/lib/handlers/rules/index.d.ts +19 -0
- package/lib/handlers/rules/index.d.ts.map +1 -0
- package/lib/handlers/rules/index.js +35 -0
- package/lib/handlers/rules/index.js.map +1 -0
- package/lib/handlers/rules/js.d.ts +3 -0
- package/lib/handlers/rules/js.d.ts.map +1 -0
- package/lib/handlers/rules/js.js +5 -0
- package/lib/handlers/rules/js.js.map +1 -0
- package/lib/handlers/rules/json.d.ts +3 -0
- package/lib/handlers/rules/json.d.ts.map +1 -0
- package/lib/handlers/rules/json.js +7 -0
- package/lib/handlers/rules/json.js.map +1 -0
- package/lib/handlers/rules/svg.d.ts +3 -0
- package/lib/handlers/rules/svg.d.ts.map +1 -0
- package/lib/handlers/rules/svg.inline.d.ts +3 -0
- package/lib/handlers/rules/svg.inline.d.ts.map +1 -0
- package/lib/handlers/rules/svg.inline.js +6 -0
- package/lib/handlers/rules/svg.inline.js.map +1 -0
- package/lib/handlers/rules/svg.js +5 -0
- package/lib/handlers/rules/svg.js.map +1 -0
- package/lib/handlers/rules/toml.d.ts +2 -8
- package/lib/handlers/rules/toml.d.ts.map +1 -1
- package/lib/handlers/rules/toml.js +3 -9
- package/lib/handlers/rules/toml.js.map +1 -1
- package/lib/handlers/rules/webp.d.ts +3 -0
- package/lib/handlers/rules/webp.d.ts.map +1 -0
- package/lib/handlers/rules/webp.js +5 -0
- package/lib/handlers/rules/webp.js.map +1 -0
- package/lib/handlers/rules/xml.d.ts +2 -8
- package/lib/handlers/rules/xml.d.ts.map +1 -1
- package/lib/handlers/rules/xml.js +3 -9
- package/lib/handlers/rules/xml.js.map +1 -1
- package/lib/handlers/rules/yml.d.ts +3 -0
- package/lib/handlers/rules/yml.d.ts.map +1 -0
- package/lib/handlers/rules/yml.js +5 -0
- package/lib/handlers/rules/yml.js.map +1 -0
- package/lib/helpers/isMjs.d.ts +3 -0
- package/lib/helpers/isMjs.d.ts.map +1 -0
- package/lib/helpers/isMjs.js +2 -0
- package/lib/helpers/isMjs.js.map +1 -0
- package/lib/helpers/scriptExtension.d.ts +3 -0
- package/lib/helpers/scriptExtension.d.ts.map +1 -0
- package/lib/helpers/scriptExtension.js +5 -0
- package/lib/helpers/scriptExtension.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/item/index.d.ts +2 -2
- package/lib/item/index.d.ts.map +1 -1
- package/lib/item/index.js +6 -3
- package/lib/item/index.js.map +1 -1
- package/lib/loader/index.d.ts +2 -1
- package/lib/loader/index.d.ts.map +1 -1
- package/lib/loader/index.js +2 -1
- package/lib/loader/index.js.map +1 -1
- package/lib/rule/index.d.ts +30 -21
- package/lib/rule/index.d.ts.map +1 -1
- package/lib/rule/index.js +64 -37
- package/lib/rule/index.js.map +1 -1
- package/lib/service.d.ts +9 -12
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +28 -59
- package/lib/service.js.map +1 -1
- package/lib/shared/base.d.ts +1 -1
- package/lib/shared/base.d.ts.map +1 -1
- package/lib/shared/base.js +4 -2
- package/lib/shared/base.js.map +1 -1
- package/lib/types.d.ts +8 -2
- package/lib/types.d.ts.map +1 -1
- package/package.json +35 -37
- package/src/config/bail.ts +4 -0
- package/src/config/cache.ts +4 -0
- package/src/config/context.ts +3 -0
- package/src/config/dependencies.ts +11 -0
- package/src/config/devtool.ts +4 -0
- package/src/config/entry.ts +4 -0
- package/src/config/experiments.ts +4 -0
- package/src/config/externals.ts +4 -0
- package/src/config/externalsType.ts +3 -0
- package/src/config/index.test.ts +129 -0
- package/src/config/index.ts +67 -0
- package/src/config/infrastructureLogging.ts +21 -0
- package/src/config/loader.ts +4 -0
- package/src/config/mode.ts +4 -0
- package/src/config/module.ts +43 -0
- package/src/config/name.ts +4 -0
- package/src/config/node.ts +4 -0
- package/src/config/optimization.ts +19 -0
- package/src/config/output/assetModuleFilename.ts +9 -0
- package/src/config/output/chunkFilename.ts +18 -0
- package/src/config/output/filename.ts +19 -0
- package/src/config/output/index.ts +27 -0
- package/src/config/parallelism.ts +6 -0
- package/src/config/performance.ts +4 -0
- package/src/config/plugins.ts +4 -0
- package/src/config/profile.ts +4 -0
- package/src/config/recordsPath.ts +7 -0
- package/src/config/resolve.ts +33 -0
- package/src/config/stats.ts +22 -0
- package/src/config/target.ts +9 -0
- package/src/handlers/index.ts +22 -0
- package/src/handlers/items/items.ts +117 -0
- package/src/handlers/loaders/loaders.ts +31 -0
- package/src/handlers/register.ts +51 -0
- package/src/handlers/rules/css.module.ts +7 -0
- package/src/handlers/rules/css.ts +7 -0
- package/src/handlers/rules/csv.test.ts +25 -0
- package/src/handlers/rules/csv.ts +7 -0
- package/src/handlers/rules/font.inline.ts +8 -0
- package/src/handlers/rules/font.ts +7 -0
- package/src/handlers/rules/html.ts +7 -0
- package/src/handlers/rules/image.inline.ts +8 -0
- package/src/handlers/rules/image.ts +7 -0
- package/src/handlers/rules/index.ts +35 -0
- package/src/handlers/rules/js.ts +7 -0
- package/src/handlers/rules/json.ts +10 -0
- package/src/handlers/rules/svg.inline.ts +8 -0
- package/src/handlers/rules/svg.ts +7 -0
- package/src/handlers/rules/toml.test.ts +22 -0
- package/src/handlers/rules/toml.ts +10 -0
- package/src/handlers/rules/webp.ts +7 -0
- package/src/handlers/rules/xml.test.ts +24 -0
- package/src/handlers/rules/xml.ts +7 -0
- package/src/handlers/rules/yml.ts +7 -0
- package/src/helpers/isMjs.ts +4 -0
- package/src/helpers/scriptExtension.ts +11 -0
- package/src/index.ts +17 -0
- package/src/item/index.ts +181 -0
- package/src/loader/index.ts +40 -0
- package/src/rule/index.test.ts +88 -0
- package/src/rule/index.ts +311 -0
- package/src/service.ts +245 -0
- package/src/shared/base.ts +37 -0
- package/src/types.ts +57 -0
- package/lib/config/builder.d.ts +0 -31
- package/lib/config/builder.d.ts.map +0 -1
- package/lib/config/builder.js +0 -32
- package/lib/config/builder.js.map +0 -1
- package/lib/config/output.d.ts +0 -4
- package/lib/config/output.d.ts.map +0 -1
- package/lib/config/output.js +0 -13
- package/lib/config/output.js.map +0 -1
- package/lib/handlers/items.d.ts +0 -69
- package/lib/handlers/items.d.ts.map +0 -1
- package/lib/handlers/items.js +0 -99
- package/lib/handlers/items.js.map +0 -1
- package/lib/handlers/loaders.d.ts +0 -57
- package/lib/handlers/loaders.d.ts.map +0 -1
- package/lib/handlers/loaders.js +0 -82
- package/lib/handlers/loaders.js.map +0 -1
- package/lib/handlers/rules/rules.d.ts +0 -63
- package/lib/handlers/rules/rules.d.ts.map +0 -1
- package/lib/handlers/rules/rules.js +0 -124
- package/lib/handlers/rules/rules.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type {Factory} from './index.js'
|
|
2
|
+
|
|
3
|
+
export const stats: Factory<`stats`> = async app =>
|
|
4
|
+
app.hooks.filter(
|
|
5
|
+
`build.stats`,
|
|
6
|
+
app.isProduction
|
|
7
|
+
? {
|
|
8
|
+
all: false,
|
|
9
|
+
assets: true,
|
|
10
|
+
children: false,
|
|
11
|
+
entrypoints: true,
|
|
12
|
+
errors: true,
|
|
13
|
+
errorsCount: true,
|
|
14
|
+
hash: true,
|
|
15
|
+
outputPath: true,
|
|
16
|
+
modules: true,
|
|
17
|
+
timings: true,
|
|
18
|
+
warnings: true,
|
|
19
|
+
warningsCount: true,
|
|
20
|
+
}
|
|
21
|
+
: {preset: `none`},
|
|
22
|
+
)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type {Bud} from '@roots/bud-framework'
|
|
2
|
+
|
|
3
|
+
import type {Rule} from '../rule/index.js'
|
|
4
|
+
import * as items from './items/items.js'
|
|
5
|
+
import * as loaders from './loaders/loaders.js'
|
|
6
|
+
import {register} from './register.js'
|
|
7
|
+
import {rules} from './rules/index.js'
|
|
8
|
+
|
|
9
|
+
export interface Props {
|
|
10
|
+
filter: Bud[`hooks`][`filter`]
|
|
11
|
+
makeItem: Bud[`build`][`makeItem`]
|
|
12
|
+
makeLoader: Bud[`build`][`makeLoader`]
|
|
13
|
+
makeRule: Bud[`build`][`makeRule`]
|
|
14
|
+
isProduction: Bud[`isProduction`]
|
|
15
|
+
path: Bud[`path`]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface Factory<T = Rule> {
|
|
19
|
+
(props: Props): T
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {items, loaders, register, rules}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type {Item} from '@roots/bud-framework/services/build'
|
|
2
|
+
import {isBoolean} from '@roots/bud-support/lodash-es'
|
|
3
|
+
|
|
4
|
+
import type {Factory} from '../index.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* CSS loader
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export const css: Factory<Item> = ({makeItem}) =>
|
|
12
|
+
makeItem()
|
|
13
|
+
.setIdent(`css`)
|
|
14
|
+
.setLoader(`css`)
|
|
15
|
+
.setOptions(({build: {rules}, hooks: {filter}}) => ({
|
|
16
|
+
importLoaders: rules.css.getUse().length - 2,
|
|
17
|
+
modules: false,
|
|
18
|
+
sourceMap: isBoolean(filter(`build.devtool`, false))
|
|
19
|
+
? filter(`build.devtool`, false)
|
|
20
|
+
: true,
|
|
21
|
+
}))
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* CSS module loader
|
|
25
|
+
*
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
export const cssModule: Factory<Item> = ({makeItem}) =>
|
|
29
|
+
makeItem()
|
|
30
|
+
.setIdent(`cssModule`)
|
|
31
|
+
.setLoader(`css`)
|
|
32
|
+
.setOptions(({build: {rules}, hooks: {filter}}) => ({
|
|
33
|
+
esModule: true,
|
|
34
|
+
importLoaders: rules.cssModule.getUse().length - 2,
|
|
35
|
+
localIdentName: `[name]__[local]___[hash:base64:5]`,
|
|
36
|
+
modules: true,
|
|
37
|
+
sourceMap: isBoolean(filter(`build.devtool`, false))
|
|
38
|
+
? filter(`build.devtool`, false)
|
|
39
|
+
: true,
|
|
40
|
+
}))
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* CSV loader
|
|
44
|
+
*
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
export const csv: Factory<Item> = ({makeItem}) =>
|
|
48
|
+
makeItem().setLoader(`csv`).setIdent(`csv`)
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* HTML loader
|
|
52
|
+
*
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
export const html: Factory<Item> = ({makeItem}) =>
|
|
56
|
+
makeItem().setLoader(`html`).setIdent(`html`)
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Style loader
|
|
60
|
+
*
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
export const style: Factory<Item> = ({makeItem}) =>
|
|
64
|
+
makeItem().setLoader(`style`).setIdent(`style`)
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Markdown loader
|
|
68
|
+
*
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
71
|
+
export const md: Factory<Item> = ({makeItem}) =>
|
|
72
|
+
makeItem().setIdent(`md`).setLoader(`md`)
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* MiniCss loader
|
|
76
|
+
*
|
|
77
|
+
* @public
|
|
78
|
+
*/
|
|
79
|
+
export const minicss: Factory<Item> = ({makeItem}) =>
|
|
80
|
+
makeItem()
|
|
81
|
+
.setLoader(`minicss`)
|
|
82
|
+
.setIdent(`minicss`)
|
|
83
|
+
.setOptions(app => ({
|
|
84
|
+
publicPath: app.hooks.filter(`build.output.publicPath`),
|
|
85
|
+
}))
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Raw loader
|
|
89
|
+
*
|
|
90
|
+
* @public
|
|
91
|
+
*/
|
|
92
|
+
export const raw: Factory<Item> = ({makeItem}) =>
|
|
93
|
+
makeItem().setLoader(`raw`).setIdent(`raw`)
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* File loader
|
|
97
|
+
*
|
|
98
|
+
* @public
|
|
99
|
+
*/
|
|
100
|
+
export const file: Factory<Item> = ({makeItem}) =>
|
|
101
|
+
makeItem().setLoader(`file`).setIdent(`file`)
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Xml loader
|
|
105
|
+
*
|
|
106
|
+
* @public
|
|
107
|
+
*/
|
|
108
|
+
export const xml: Factory<Item> = ({makeItem}) =>
|
|
109
|
+
makeItem().setLoader(`xml`).setIdent(`xml`)
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Yml loader
|
|
113
|
+
*
|
|
114
|
+
* @public
|
|
115
|
+
*/
|
|
116
|
+
export const yml: Factory<Item> = ({makeItem}) =>
|
|
117
|
+
makeItem().setLoader(`yml`).setIdent(`yml`)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type {Loader} from '@roots/bud-framework/services/build'
|
|
2
|
+
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
|
|
3
|
+
|
|
4
|
+
import type {Factory} from '../index.js'
|
|
5
|
+
|
|
6
|
+
export const css: Factory<Loader> = ({makeLoader}) =>
|
|
7
|
+
makeLoader(`css-loader`)
|
|
8
|
+
|
|
9
|
+
export const csv: Factory<Loader> = ({makeLoader}) =>
|
|
10
|
+
makeLoader(`csv-loader`)
|
|
11
|
+
|
|
12
|
+
export const file: Factory<Loader> = ({makeLoader}) =>
|
|
13
|
+
makeLoader(`file-loader`)
|
|
14
|
+
|
|
15
|
+
export const html: Factory<Loader> = ({makeLoader}) =>
|
|
16
|
+
makeLoader(`html-loader`)
|
|
17
|
+
|
|
18
|
+
export const remark: Factory<Loader> = ({makeLoader}) =>
|
|
19
|
+
makeLoader(`remark-loader`)
|
|
20
|
+
|
|
21
|
+
export const minicss: Factory<Loader> = ({makeLoader}) =>
|
|
22
|
+
makeLoader(MiniCssExtractPlugin.loader)
|
|
23
|
+
|
|
24
|
+
export const style: Factory<Loader> = ({makeLoader}) =>
|
|
25
|
+
makeLoader(`style-loader`)
|
|
26
|
+
|
|
27
|
+
export const xml: Factory<Loader> = ({makeLoader}) =>
|
|
28
|
+
makeLoader(`xml-loader`)
|
|
29
|
+
|
|
30
|
+
export const yml: Factory<Loader> = ({makeLoader}) =>
|
|
31
|
+
makeLoader(`yml-loader`)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type {Bud} from '@roots/bud-framework'
|
|
2
|
+
|
|
3
|
+
import type {Factory} from './index.js'
|
|
4
|
+
import * as items from './items/items.js'
|
|
5
|
+
import * as loaders from './loaders/loaders.js'
|
|
6
|
+
import {rules} from './rules/index.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Registry factory curry function
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export interface makeRegister {
|
|
14
|
+
<T, F extends CallableFunction>(props: Partial<Bud>, setRule: F): <
|
|
15
|
+
K extends keyof T & string,
|
|
16
|
+
>([key, factory]: [K, Factory<T[K]>]) => void
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Register built-in {@link loaders}, {@link items} and {@link rules}
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export async function register(bud: Bud) {
|
|
25
|
+
Object.entries(loaders).map(makeRegister(bud, bud.build.setLoader))
|
|
26
|
+
Object.entries(items).map(makeRegister(bud, bud.build.setItem))
|
|
27
|
+
|
|
28
|
+
// this is a bit of a hack
|
|
29
|
+
// that sets the base stylesheet loader
|
|
30
|
+
// to minicss in production and style-loader in development
|
|
31
|
+
bud.build.items.precss = bud.isProduction
|
|
32
|
+
? bud.build.items.minicss
|
|
33
|
+
: bud.build.items.style
|
|
34
|
+
|
|
35
|
+
Object.entries(rules).map(makeRegister(bud, bud.build.setRule))
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const makeRegister: makeRegister =
|
|
39
|
+
({build, hooks, isProduction, path}, setRule) =>
|
|
40
|
+
([key, factory]) =>
|
|
41
|
+
setRule(
|
|
42
|
+
key,
|
|
43
|
+
factory({
|
|
44
|
+
filter: hooks.filter,
|
|
45
|
+
makeItem: build.makeItem,
|
|
46
|
+
makeLoader: build.makeLoader,
|
|
47
|
+
makeRule: build.makeRule,
|
|
48
|
+
isProduction,
|
|
49
|
+
path,
|
|
50
|
+
}),
|
|
51
|
+
)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {factory} from '@repo/test-kit/bud'
|
|
2
|
+
import {describe, expect, it} from 'vitest'
|
|
3
|
+
|
|
4
|
+
import {csv} from './csv.js'
|
|
5
|
+
|
|
6
|
+
describe(`csv loader`, () => {
|
|
7
|
+
it(`should return a rule`, async () => {
|
|
8
|
+
const bud = await factory()
|
|
9
|
+
|
|
10
|
+
const result = csv({
|
|
11
|
+
filter: bud.hooks.filter,
|
|
12
|
+
makeItem: bud.build.makeItem,
|
|
13
|
+
makeLoader: bud.build.makeLoader,
|
|
14
|
+
makeRule: bud.build.makeRule,
|
|
15
|
+
isProduction: bud.isProduction,
|
|
16
|
+
path: bud.path,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const webpackOutput = result.toWebpack()
|
|
20
|
+
|
|
21
|
+
expect(webpackOutput.use?.[0]).toEqual(
|
|
22
|
+
expect.objectContaining({ident: `csv`, loader: `csv-loader`}),
|
|
23
|
+
)
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {css} from './css.js'
|
|
2
|
+
import {cssModule} from './css.module.js'
|
|
3
|
+
import {csv} from './csv.js'
|
|
4
|
+
import {inlineFont} from './font.inline.js'
|
|
5
|
+
import {font} from './font.js'
|
|
6
|
+
import {html} from './html.js'
|
|
7
|
+
import {inlineImage} from './image.inline.js'
|
|
8
|
+
import {image} from './image.js'
|
|
9
|
+
import {js} from './js.js'
|
|
10
|
+
import {json} from './json.js'
|
|
11
|
+
import {inlineSvg} from './svg.inline.js'
|
|
12
|
+
import {svg} from './svg.js'
|
|
13
|
+
import {toml} from './toml.js'
|
|
14
|
+
import {webp} from './webp.js'
|
|
15
|
+
import {xml} from './xml.js'
|
|
16
|
+
import {yml} from './yml.js'
|
|
17
|
+
|
|
18
|
+
export const rules = {
|
|
19
|
+
js,
|
|
20
|
+
css,
|
|
21
|
+
cssModule,
|
|
22
|
+
inlineSvg,
|
|
23
|
+
inlineImage,
|
|
24
|
+
inlineFont,
|
|
25
|
+
svg,
|
|
26
|
+
webp,
|
|
27
|
+
image,
|
|
28
|
+
font,
|
|
29
|
+
json,
|
|
30
|
+
html,
|
|
31
|
+
yml,
|
|
32
|
+
toml,
|
|
33
|
+
xml,
|
|
34
|
+
csv,
|
|
35
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as json5Parser from 'json5'
|
|
2
|
+
|
|
3
|
+
import type {Factory} from '../index.js'
|
|
4
|
+
|
|
5
|
+
export const json: Factory = ({filter, makeRule, path}) =>
|
|
6
|
+
makeRule()
|
|
7
|
+
.setType(`json`)
|
|
8
|
+
.setInclude([() => path()])
|
|
9
|
+
.setTest(filter(`pattern.json`))
|
|
10
|
+
.setParser({parse: json5Parser.parse})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {factory} from '@repo/test-kit/bud'
|
|
2
|
+
import {describe, expect, it} from 'vitest'
|
|
3
|
+
|
|
4
|
+
import {toml} from './toml'
|
|
5
|
+
|
|
6
|
+
describe(`toml loader`, () => {
|
|
7
|
+
let bud
|
|
8
|
+
|
|
9
|
+
it(`should return a rule`, async () => {
|
|
10
|
+
bud = await factory()
|
|
11
|
+
const result = toml({
|
|
12
|
+
filter: bud.hooks.filter,
|
|
13
|
+
makeItem: bud.build.makeItem,
|
|
14
|
+
makeLoader: bud.build.makeLoader,
|
|
15
|
+
makeRule: bud.build.makeRule,
|
|
16
|
+
isProduction: bud.isProduction,
|
|
17
|
+
path: bud.path,
|
|
18
|
+
})
|
|
19
|
+
const webpackOutput = result.toWebpack()
|
|
20
|
+
expect(webpackOutput.type).toEqual(`json`)
|
|
21
|
+
})
|
|
22
|
+
})
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as tomlParser from 'toml'
|
|
2
|
+
|
|
3
|
+
import type {Factory} from '../index.js'
|
|
4
|
+
|
|
5
|
+
export const toml: Factory = ({filter, makeRule, path}) =>
|
|
6
|
+
makeRule()
|
|
7
|
+
.setType(`json`)
|
|
8
|
+
.setInclude([() => path()])
|
|
9
|
+
.setTest(() => filter(`pattern.toml`))
|
|
10
|
+
.setParser({parse: tomlParser.parse})
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {describe, expect, it} from 'vitest'
|
|
2
|
+
|
|
3
|
+
import {xml} from './xml'
|
|
4
|
+
|
|
5
|
+
describe(`xml loader`, () => {
|
|
6
|
+
it(`should return a rule`, async () => {
|
|
7
|
+
const bud = await import(`@repo/test-kit/bud`).then(
|
|
8
|
+
async ({factory}) => await factory(),
|
|
9
|
+
)
|
|
10
|
+
const result = xml({
|
|
11
|
+
filter: bud.hooks.filter,
|
|
12
|
+
makeItem: bud.build.makeItem,
|
|
13
|
+
makeLoader: bud.build.makeLoader,
|
|
14
|
+
makeRule: bud.build.makeRule,
|
|
15
|
+
isProduction: bud.isProduction,
|
|
16
|
+
path: bud.path,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const webpackOutput = result.toWebpack()
|
|
20
|
+
expect(webpackOutput.use?.[0]).toEqual(
|
|
21
|
+
expect.objectContaining({ident: `xml`, loader: `xml-loader`}),
|
|
22
|
+
)
|
|
23
|
+
})
|
|
24
|
+
})
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type {Bud} from '@roots/bud-framework'
|
|
2
|
+
|
|
3
|
+
import {isMjs} from './isMjs.js'
|
|
4
|
+
|
|
5
|
+
export const scriptExtension = (
|
|
6
|
+
filter: Bud[`hooks`][`filter`],
|
|
7
|
+
mjs: `.${string}` = `.mjs`,
|
|
8
|
+
js: `.${string}` = `.js`,
|
|
9
|
+
): `.${string}` => {
|
|
10
|
+
return isMjs(filter) ? mjs : js
|
|
11
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright © Roots Software Foundation LLC
|
|
2
|
+
// Licensed under the MIT license.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Configuration builder
|
|
6
|
+
*
|
|
7
|
+
* @see https://bud.js.org
|
|
8
|
+
* @see https://github.com/roots/bud
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import './types.js'
|
|
14
|
+
|
|
15
|
+
import {Build} from './service.js'
|
|
16
|
+
|
|
17
|
+
export default Build
|