-
Notifications
You must be signed in to change notification settings - Fork 196
/
Copy pathesbuild.config.js
66 lines (61 loc) · 1.82 KB
/
esbuild.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { createRequire } from "module";
import path from "path";
import { build } from "esbuild";
import { nodeModulesPolyfillPlugin } from "esbuild-plugins-node-modules-polyfill";
import { sassPlugin } from "esbuild-sass-plugin";
import postcss from "postcss";
import { mergeDeepLeft } from "ramda";
import sass from "sass";
const require = createRequire(import.meta.url);
const svgPlugin = require("esbuild-plugin-svgr");
const projectConfigurations = require("./config/build/config.js");
const projectConstants = require("./config/build/constants.js");
const postCssConfig = require("./postcss.config.js");
const { alias } = projectConfigurations;
const { define, extensions } = projectConstants;
const isWatchMode = process.argv.includes("--watch");
const {
absolutePath: _,
extensions: __,
...projectConstantsWithoutExtensions
} = projectConstants;
const defaultConfigurations = {
bundle: true,
format: "esm",
platform: "browser",
mainFields: ["browser", "module", "main"],
resolveExtensions: extensions,
outdir: path.join(process.cwd(), "app/assets/builds"),
sourcemap: isWatchMode ? true : "external",
loader: {
".png": "file",
".jpeg": "file",
".jpg": "file",
".svg": "file",
".ico": "file",
},
plugins: [
svgPlugin(),
sassPlugin({
transform: async source => {
const { css } = await postcss(postCssConfig.plugins).process(source, {
from: undefined,
});
return css;
},
importMapper: filePath =>
filePath.replace("@bigbinary/neetoui", "@bigbinary/neetoui/dist"),
logger: sass.Logger.silent,
}),
nodeModulesPolyfillPlugin({
modules: {
events: true,
fs: true,
process: true,
},
}),
],
alias,
define,
};
build(mergeDeepLeft(projectConstantsWithoutExtensions, defaultConfigurations));