diff --git a/packages/core/src/build/hook/build.js b/packages/core/src/build/hook/build.js index 2fdfd5dd..d2922faf 100644 --- a/packages/core/src/build/hook/build.js +++ b/packages/core/src/build/hook/build.js @@ -8,6 +8,7 @@ import join from "@rcompat/fs/join"; import exclude from "@rcompat/object/exclude"; import stringify from "@rcompat/object/stringify"; import manifest from "@rcompat/package/manifest"; +import root from "@rcompat/package/root"; import copy_includes from "./copy_includes.js"; import $router from "./router.js"; @@ -163,7 +164,12 @@ const post = async (app, mode, target) => { await write_bootstrap(build_number, app, mode); // copy config file - await app.root.join(config_filename).copy(app.path.build.join(config_filename)); + const local_config = app.root.join(config_filename); + const build_config = app.path.build.join(config_filename); + const root_base = await root(import.meta.url); + const default_config = root_base.join("/src/private/config.js"); + (await local_config.exists() ? local_config : default_config) + .copy(build_config); const manifest_data = await manifest(); // create package.json diff --git a/packages/core/src/build/index.js b/packages/core/src/build/index.js index bef2f5a5..c4941b44 100644 --- a/packages/core/src/build/index.js +++ b/packages/core/src/build/index.js @@ -12,18 +12,27 @@ import platform from "@rcompat/platform"; import app from "./app.js"; import { build, init } from "./hook/exports.js"; +const empty_config = config => config === undefined || empty(config); + const get_config = async project_root => { const local_config = project_root.join(config_filename); - return await local_config.exists() - ? tryreturn(async _ => { + const exists = await local_config.exists() + if (exists) { + try { const imported = await local_config.import("default"); - empty(imported) && empty_config_file(local_config); + empty_config(imported) && empty_config_file(local_config); return imported; - }).orelse(({ message }) => - error_in_config_file(message, `${platform} ${local_config}`)) - : config; + } catch (error) { + if (error.level === undefined) { + error_in_config_file(error.message, `${platform} ${local_config}`); + } else { + throw error; + } + } + } + return config; }; export default async (mode, target) => tryreturn(async _ => {