mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core&ui: enhanced template hot reload
This commit is contained in:
3 files changed
+14
-9
No files matched your search
@@ -18,7 +18,7 @@ export function register(cli: CAC) {
|
|||||||
let addons = JSON.parse(fs.readFileSync(addonPath).toString());
|
let addons = JSON.parse(fs.readFileSync(addonPath).toString());
|
||||||
if (operation === 'create') {
|
if (operation === 'create') {
|
||||||
const dir = `${addonDir}/${name || 'addon'}`;
|
const dir = `${addonDir}/${name || 'addon'}`;
|
||||||
fs.mkdirSync(dir);
|
fs.mkdirSync(dir, { recursive: true });
|
||||||
child.execSync('yarn init -y', { cwd: dir });
|
child.execSync('yarn init -y', { cwd: dir });
|
||||||
fs.mkdirSync(`${dir}/templates`);
|
fs.mkdirSync(`${dir}/templates`);
|
||||||
fs.mkdirSync(`${dir}/locales`);
|
fs.mkdirSync(`${dir}/locales`);
|
||||||
|
|||||||
@@ -147,8 +147,10 @@ export async function template(pending: string[], fail: string[]) {
|
|||||||
try {
|
try {
|
||||||
const files = await getFiles(p);
|
const files = await getFiles(p);
|
||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
if (file.endsWith('.tsx')) global.Hydro.ui.template[file] = require(path.resolve(p, file));
|
const l = path.resolve(p, file);
|
||||||
global.Hydro.ui.template[file] = await fs.readFile(path.resolve(p, file), 'utf-8');
|
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);
|
logger.info('Template init: %s', i);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -17,10 +17,12 @@ else template &&= findFileSync(template);
|
|||||||
|
|
||||||
class Loader extends nunjucks.Loader {
|
class Loader extends nunjucks.Loader {
|
||||||
getSource(name) {
|
getSource(name) {
|
||||||
if (!template) {
|
const src = global.Hydro.ui.template[name];
|
||||||
if (!global.Hydro.ui.template[name]) throw new Error(`Cannot get template ${name}`);
|
const ref = global.Hydro.ui.template[`${name}.source`];
|
||||||
|
if (!process.env.DEV) {
|
||||||
|
if (!src) throw new Error(`Cannot get template ${name}`);
|
||||||
return {
|
return {
|
||||||
src: global.Hydro.ui.template[name],
|
src,
|
||||||
path: name,
|
path: name,
|
||||||
noCache: false,
|
noCache: false,
|
||||||
};
|
};
|
||||||
@@ -28,10 +30,11 @@ class Loader extends nunjucks.Loader {
|
|||||||
let fullpath = null;
|
let fullpath = null;
|
||||||
const p = path.resolve(template, name);
|
const p = path.resolve(template, name);
|
||||||
if (fs.existsSync(p)) fullpath = p;
|
if (fs.existsSync(p)) fullpath = p;
|
||||||
|
if (!fullpath && ref && fs.existsSync(ref)) fullpath = ref;
|
||||||
if (!fullpath) {
|
if (!fullpath) {
|
||||||
if (global.Hydro.ui.template[name]) {
|
if (src) {
|
||||||
return {
|
return {
|
||||||
src: global.Hydro.ui.template[name],
|
src,
|
||||||
path: name,
|
path: name,
|
||||||
noCache: true,
|
noCache: true,
|
||||||
};
|
};
|
||||||
@@ -39,7 +42,7 @@ class Loader extends nunjucks.Loader {
|
|||||||
throw new Error(`Cannot get template ${name}`);
|
throw new Error(`Cannot get template ${name}`);
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
src: fs.readFileSync(fullpath, 'utf-8').toString(),
|
src: fs.readFileSync(fullpath, 'utf-8'),
|
||||||
path: fullpath,
|
path: fullpath,
|
||||||
noCache: true,
|
noCache: true,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in new issue
Block a user