commit 3c4b9d819add3b4804e2a8a2e95228efd55a3a91
parent 6647cf86bddc989d9d3e6c85b9e534cbe349f914
Author: Sebastian <sebasjm@gmail.com>
Date: Wed, 14 May 2025 17:31:47 -0300
tools: allow the build script to split assets for dev and prod
Diffstat:
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/packages/web-util/src/hooks/useLocalStorage.ts b/packages/web-util/src/hooks/useLocalStorage.ts
@@ -52,7 +52,7 @@ export function buildStorageKey<Key = string>(
}
export interface StorageState<Type = string> {
- value: currentRequest?: Type;
+ value?: Type;
update: (s: Type) => void;
reset: () => void;
}
@@ -120,7 +120,7 @@ export function useLocalStorage<Type = string>(
};
return {
- value: currentRequest: current,
+ value: current,
update: setValue,
reset: () => {
setValue(defaultValue);
diff --git a/packages/web-util/src/index.build.ts b/packages/web-util/src/index.build.ts
@@ -8,7 +8,7 @@ import postcssrc from "postcss-load-config";
type Assets = {
base: string;
- files: string[];
+ files: (string | { orig: string; dest: string })[];
};
export function getFilesInDirectory(startPath: string, regex?: RegExp): Assets {
@@ -73,13 +73,17 @@ function copyFilesPlugin(assets: Assets | Assets[]) {
}
build.onEnd(() => {
list.forEach((as) => {
- for (const file of as.files) {
- const destination = path.join(outDir, path.relative(as.base, file));
+ for (const fileName of as.files) {
+ const { orig, dest } =
+ typeof fileName === "string"
+ ? { orig: fileName, dest: fileName }
+ : fileName;
+ const destination = path.join(outDir, path.relative(as.base, orig));
const dirname = path.dirname(destination);
if (!fs.existsSync(dirname)) {
fs.mkdirSync(dirname, { recursive: true });
}
- fs.copyFileSync(file, destination);
+ fs.copyFileSync(dest, destination);
}
});
});
@@ -220,7 +224,7 @@ export interface BuildParams {
importMeta?: ImportMeta;
source: {
assets: Assets | Assets[];
- js: string[] | Record<string,string>;
+ js: string[] | Record<string, string>;
};
public?: string;
/**
@@ -271,7 +275,7 @@ export function computeConfig(params: BuildParams): {
if (!params.destination) {
throw Error(`missing destination folder`);
}
-
+
const plugins: Array<esbuild.Plugin> = [
copyFilesPlugin(params.source.assets),
];
@@ -358,7 +362,7 @@ export function initializeDevOnWebUtils(
*/
export function initializeDev(
config: BuildParams,
- options: {dontDoLiveReload?: boolean} = {},
+ options: { dontDoLiveReload?: boolean } = {},
): () => Promise<esbuild.BuildResult> {
function buildDevelopment() {
const { esBuildOptions } = computeConfig(config);