Skip to content

Commit 1c5a701

Browse files
Chore: Clean up server implementation and update test docs (#2316)
- Replace live-server with existing Browsersync dependency as web server - Remove duplicate `index.html` file - Add `build:html` script to generate `/docs/preview.html`
1 parent cf61192 commit 1c5a701

23 files changed

+898
-2918
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
*.log
44
/_playwright-report
55
/_playwright-results
6+
/docs/preview.html
67
/lib
78
/node_modules
8-
/themes
99

1010
# exceptions
1111
!.gitkeep

build/html.js

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import * as fs from 'node:fs';
2+
import * as path from 'node:path';
3+
import * as url from 'node:url';
4+
import prettier from 'prettier';
5+
import stripIndent from 'common-tags/lib/stripIndent/index.js';
6+
7+
const __filename = url.fileURLToPath(import.meta.url);
8+
const __dirname = path.dirname(__filename);
9+
const prettierConfig = prettier.resolveConfig.sync(__dirname);
10+
11+
// Preview
12+
// =============================================================================
13+
function generatePreview() {
14+
const comment = stripIndent`
15+
<!--
16+
This file is generated by the build/html.js script.
17+
Do not edit this file directly.
18+
-->
19+
`;
20+
const srcFile = 'index.html';
21+
const srcPath = path.resolve(__dirname, '..', 'docs');
22+
const srcHTML = fs.readFileSync(path.resolve(srcPath, srcFile), 'utf8');
23+
const outFile = 'preview.html';
24+
const outPath = path.resolve(__dirname, '..', 'docs');
25+
const outHTML = srcHTML
26+
// Append comment
27+
.replace(/(<!DOCTYPE html>)/, `${comment}\n$1`)
28+
// Modify title
29+
.replace(/(<\/title>)/, ' (Preview)$1')
30+
// Replace CDN URLs with local paths
31+
.replace(/\/\/cdn.jsdelivr.net\/npm\/docsify@4\//g, '/');
32+
const formattedHTML = prettier.format(outHTML, {
33+
...prettierConfig,
34+
filepath: outFile,
35+
});
36+
37+
console.log(`\nBuilding ${outFile} in ${outPath}`);
38+
39+
fs.writeFileSync(path.resolve(outPath, outFile), formattedHTML);
40+
}
41+
42+
generatePreview();

docs/index.html

+15-19
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,22 @@
5656
width: auto !important;
5757
}
5858
</style>
59+
<script>
60+
(function () {
61+
const lang = location.hash.match(/#\/(de-de|es|ru-ru|zh-cn)\//);
62+
63+
// Set html "lang" attribute based on URL
64+
if (lang) {
65+
document.documentElement.setAttribute('lang', lang[1]);
66+
}
67+
})();
68+
</script>
5969
</head>
6070

6171
<body>
6272
<div id="app">Loading ...</div>
6373
<script src="//cdn.jsdelivr.net/npm/docsify-plugin-carbon@1"></script>
6474
<script>
65-
// Set html "lang" attribute based on URL
66-
const lang = location.hash.match(/#\/(de-de|es|ru-ru|zh-cn)\//);
67-
68-
if (lang) {
69-
document.documentElement.setAttribute('lang', lang[1]);
70-
}
71-
7275
// Docsify configuration
7376
window.$docsify = {
7477
alias: {
@@ -184,7 +187,9 @@
184187
},
185188
},
186189
plugins: [
187-
DocsifyCarbon.create('CEBI6KQE', 'docsifyjsorg'),
190+
function () {
191+
DocsifyCarbon.create('CEBI6KQE', 'docsifyjsorg');
192+
},
188193
function (hook, vm) {
189194
hook.beforeEach(html => {
190195
if (/githubusercontent\.com/.test(vm.route.file)) {
@@ -214,21 +219,12 @@
214219
</script>
215220
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/docsify.min.js"></script>
216221
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.min.js"></script>
222+
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/ga.min.js"></script>
223+
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/matomo.min.js"></script>
217224
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
218225
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-markdown.min.js"></script>
219226
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-nginx.min.js"></script>
220227
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-php.min.js"></script>
221-
<script>
222-
// Public site only
223-
if (/docsify/.test(location.host)) {
224-
document.write(
225-
'<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/ga.min.js"><\/script>'
226-
);
227-
document.write(
228-
'<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/matomo.min.js"><\/script>'
229-
);
230-
}
231-
</script>
232228
<script src="//cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
233229
<!-- <script src="//cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script> -->
234230
</body>

index.html

-190
This file was deleted.

jest.config.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import { TEST_HOST } from './test/config/server.js';
1+
import serverConfig from './server.config.js';
22

3+
const { hostname, port } = serverConfig.test;
4+
const TEST_HOST = `http://${hostname}:${port}`;
35
const sharedConfig = {
46
errorOnDeprecated: true,
57
globalSetup: './test/config/jest.setup.js',
@@ -11,6 +13,8 @@ const sharedConfig = {
1113
testURL: `${TEST_HOST}/_blank.html`,
1214
};
1315

16+
process.env.TEST_HOST = TEST_HOST;
17+
1418
export default {
1519
transform: {},
1620
projects: [

0 commit comments

Comments
 (0)