进行了一些小修复

This commit is contained in:
2026-08-26 13:30:02 +08:00
parent 065a5bc99c
commit ed1a47cf4e
7 changed files with 71 additions and 6 deletions
+1
View File
@@ -21,6 +21,7 @@
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^5.1.0", "@vitejs/plugin-vue": "^5.1.0",
"esbuild": "^0.25.12",
"vite": "^6.0.0" "vite": "^6.0.0"
} }
}, },
+1 -1
View File
@@ -1 +1 @@
{"name":"aksrt-admin","version":"1.0.0","private":true,"type":"module","scripts":{"dev":"vite","build":"vite build && node extract-naive-styles.mjs","preview":"vite preview"},"dependencies":{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.5","@codemirror/theme-one-dark":"^6.1.3","codemirror":"^6.0.2","naive-ui":"^2.40.0","pinia":"^2.2.0","vue":"^3.5.0","vue-router":"^4.4.0","vuedraggable":"^4.1.0"},"devDependencies":{"@vitejs/plugin-vue":"^5.1.0","vite":"^6.0.0"}} {"name":"aksrt-admin","version":"1.0.0","private":true,"type":"module","scripts":{"dev":"vite","build":"vite build && node extract-naive-styles.mjs","build:public":"node ../../tools/build-public-assets.mjs","preview":"vite preview"},"dependencies":{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.5","@codemirror/theme-one-dark":"^6.1.3","codemirror":"^6.0.2","naive-ui":"^2.40.0","pinia":"^2.2.0","vue":"^3.5.0","vue-router":"^4.4.0","vuedraggable":"^4.1.0"},"devDependencies":{"@vitejs/plugin-vue":"^5.1.0","esbuild":"^0.25.12","vite":"^6.0.0"}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+10 -4
View File
@@ -19,10 +19,13 @@ trait ScriptsPart1b {
$wp_scripts->registered['jquery']->deps = ['jquery-core']; $wp_scripts->registered['jquery']->deps = ['jquery-core'];
} }
wp_enqueue_script('jquery'); wp_enqueue_script('jquery');
$public_bundle = get_template_directory() . '/assets/css/build/public.css'; $public_filename = file_exists(get_template_directory() . '/assets/css/build/public.min.css')
? 'public.min.css'
: 'public.css';
$public_bundle = get_template_directory() . '/assets/css/build/' . $public_filename;
wp_enqueue_style( wp_enqueue_style(
'aksrt-public', 'aksrt-public',
$base_uri . '/assets/css/build/public.css', $base_uri . '/assets/css/build/' . $public_filename,
[], [],
file_exists($public_bundle) ? (string) filemtime($public_bundle) : $version file_exists($public_bundle) ? (string) filemtime($public_bundle) : $version
); );
@@ -585,10 +588,13 @@ trait ScriptsPart1b {
} }
if ($is_fixed_homepage) { if ($is_fixed_homepage) {
$homepage_bundle = get_template_directory() . '/assets/css/build/homepage.css'; $homepage_filename = file_exists(get_template_directory() . '/assets/css/build/homepage.min.css')
? 'homepage.min.css'
: 'homepage.css';
$homepage_bundle = get_template_directory() . '/assets/css/build/' . $homepage_filename;
wp_enqueue_style( wp_enqueue_style(
'aksrt-homepage-fixed', 'aksrt-homepage-fixed',
$base_uri . '/assets/css/build/homepage.css', $base_uri . '/assets/css/build/' . $homepage_filename,
['aksrt-public'], ['aksrt-public'],
file_exists($homepage_bundle) ? (string) filemtime($homepage_bundle) : $version file_exists($homepage_bundle) ? (string) filemtime($homepage_bundle) : $version
); );
@@ -431,3 +431,36 @@ test('legacy frontend toast APIs and selectors are fully removed', () => {
const offenders = scanned.filter((file) => legacy.test(fs.readFileSync(file, 'utf8'))); const offenders = scanned.filter((file) => legacy.test(fs.readFileSync(file, 'utf8')));
assert.deepEqual(offenders.map((file) => path.relative(root, file)), []); assert.deepEqual(offenders.map((file) => path.relative(root, file)), []);
}); });
test('public CSS bundles have parser-minified production variants', () => {
const builder = read('tools/build-public-assets.mjs');
assert.match(builder, /require\('esbuild'\)/);
assert.match(builder, /loader: 'css'/);
assert.match(builder, /minify: true/);
for (const basename of ['public', 'homepage']) {
const readablePath = path.join(root, 'assets', 'css', 'build', `${basename}.css`);
const minifiedPath = path.join(root, 'assets', 'css', 'build', `${basename}.min.css`);
assert.equal(fs.existsSync(readablePath), true, `${basename}.css must exist`);
assert.equal(fs.existsSync(minifiedPath), true, `${basename}.min.css must exist`);
assert.ok(
fs.statSync(minifiedPath).size < fs.statSync(readablePath).size * 0.9,
`${basename}.min.css should be at least 10% smaller`,
);
assert.doesNotMatch(fs.readFileSync(minifiedPath, 'utf8'), /\/\* source:/);
}
});
test('WordPress loads minified CSS with a readable-bundle fallback', () => {
const scripts = read('src/Core/ScriptsPart1b.php');
for (const basename of ['public', 'homepage']) {
assert.ok(
scripts.includes(`file_exists(get_template_directory() . '/assets/css/build/${basename}.min.css')`),
);
assert.match(scripts, new RegExp(`\\? '${basename}\\.min\\.css'`));
assert.match(scripts, new RegExp(`: '${basename}\\.css'`));
}
});
+17 -1
View File
@@ -1,8 +1,11 @@
import { mkdir, readFile, writeFile } from 'node:fs/promises'; import { mkdir, readFile, writeFile } from 'node:fs/promises';
import { createRequire } from 'node:module';
import path from 'node:path'; import path from 'node:path';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
const require = createRequire(path.join(repoRoot, 'assets/admin/package.json'));
const { transform } = require('esbuild');
const cssBuildDir = path.join(repoRoot, 'assets/css/build'); const cssBuildDir = path.join(repoRoot, 'assets/css/build');
const jsBuildDir = path.join(repoRoot, 'assets/js/build'); const jsBuildDir = path.join(repoRoot, 'assets/js/build');
@@ -133,7 +136,20 @@ async function buildCssBundle(outputName, sources) {
const sourcePath = path.join(repoRoot, source); const sourcePath = path.join(repoRoot, source);
sections.push(`/* source: ${source} */\n${await expandCss(sourcePath, outputPath)}`); sections.push(`/* source: ${source} */\n${await expandCss(sourcePath, outputPath)}`);
} }
await writeFile(outputPath, `${sections.join('\n\n')}\n`, 'utf8'); const bundle = `${sections.join('\n\n')}\n`;
const minified = await transform(bundle, {
charset: 'utf8',
legalComments: 'inline',
loader: 'css',
minify: true,
sourcefile: outputName,
});
const minifiedPath = outputPath.replace(/\.css$/, '.min.css');
await Promise.all([
writeFile(outputPath, bundle, 'utf8'),
writeFile(minifiedPath, minified.code, 'utf8'),
]);
} }
async function buildScriptBundle() { async function buildScriptBundle() {