core&ui: enhanced template hot reload

pull/564/head
undefined 1 year ago
parent b5d51f3372
commit 5588fd9a9d
No known key found for this signature in database

@ -18,7 +18,7 @@ export function register(cli: CAC) {
let addons = JSON.parse(fs.readFileSync(addonPath).toString());
if (operation === 'create') {
const dir = `${addonDir}/${name || 'addon'}`;
fs.mkdirSync(dir);
fs.mkdirSync(dir, { recursive: true });
child.execSync('yarn init -y', { cwd: dir });
fs.mkdirSync(`${dir}/templates`);
fs.mkdirSync(`${dir}/locales`);

@ -147,8 +147,10 @@ export async function template(pending: string[], fail: string[]) {
try {
const files = await getFiles(p);
for (const file of files) {
if (file.endsWith('.tsx')) global.Hydro.ui.template[file] = require(path.resolve(p, file));
global.Hydro.ui.template[file] = await fs.readFile(path.resolve(p, file), 'utf-8');
const l = path.resolve(p, file);
if (file.endsWith('.tsx')) global.Hydro.ui.template[file] = require(l);
global.Hydro.ui.template[file] = await fs.readFile(l, 'utf-8');
if (process.env.DEV) global.Hydro.ui.template[`${file}.source`] = l;
}
logger.info('Template init: %s', i);
} catch (e) {

@ -17,10 +17,12 @@ else template &&= findFileSync(template);
class Loader extends nunjucks.Loader {
getSource(name) {
if (!template) {
if (!global.Hydro.ui.template[name]) throw new Error(`Cannot get template ${name}`);
const src = global.Hydro.ui.template[name];
const ref = global.Hydro.ui.template[`${name}.source`];
if (!process.env.DEV) {
if (!src) throw new Error(`Cannot get template ${name}`);
return {
src: global.Hydro.ui.template[name],
src,
path: name,
noCache: false,
};
@ -28,10 +30,11 @@ class Loader extends nunjucks.Loader {
let fullpath = null;
const p = path.resolve(template, name);
if (fs.existsSync(p)) fullpath = p;
if (!fullpath && ref && fs.existsSync(ref)) fullpath = ref;
if (!fullpath) {
if (global.Hydro.ui.template[name]) {
if (src) {
return {
src: global.Hydro.ui.template[name],
src,
path: name,
noCache: true,
};
@ -39,7 +42,7 @@ class Loader extends nunjucks.Loader {
throw new Error(`Cannot get template ${name}`);
}
return {
src: fs.readFileSync(fullpath, 'utf-8').toString(),
src: fs.readFileSync(fullpath, 'utf-8'),
path: fullpath,
noCache: true,
};

Loading…
Cancel
Save