diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index fd3a04e8..f755814e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -34,7 +34,7 @@ $ npm run build
$ npm run preview
```
- **Please make sure to have `npm run build` pass successfully before submitting a PR.** Although the same tests will be run against your PR on the CI server, it is better to have it working locally.
+ **Please make sure to have `npm run test` pass successfully before submitting a PR.** Although the same tests will be run against your PR on the CI server, it is better to have it working locally.
It is also recommended you lint your files before the PR.
diff --git a/website/package-lock.json b/website/package-lock.json
index ee0ca30c..95b3ddb0 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -22,9 +22,9 @@
"@mdit/plugin-tab": "^0.4.8",
"@typescript-eslint/eslint-plugin": "^6.2.0",
"@typescript-eslint/parser": "^6.2.0",
- "eslint": "^8.45.0",
+ "eslint": "^8.46.0",
"eslint-config-standard": "^17.1.0",
- "eslint-plugin-vue": "^9.15.1",
+ "eslint-plugin-vue": "^9.16.0",
"feed": "^4.2.2",
"lint-staged": "^13.2.3",
"markdown-it-mdi": "^0.1.0",
@@ -32,12 +32,11 @@
"markdownlint-cli": "^0.35.0",
"prettier": "^3.0.0",
"sentences-per-line": "^0.2.1",
- "sitemap": "^7.1.1",
"stylelint": "^15.10.2",
"stylelint-stylus": "^0.18.0",
"stylus": "^0.59.0",
"vite-plugin-eslint": "^1.8.1",
- "vitepress": "^1.0.0-beta.6",
+ "vitepress": "^1.0.0-beta.7",
"vue": "^3.3.4",
"vue-eslint-parser": "^9.3.1"
}
@@ -449,9 +448,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
- "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
+ "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -516,9 +515,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.44.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
- "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
+ "version": "8.46.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
+ "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -812,7 +811,9 @@
"version": "17.0.45",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.1",
@@ -820,15 +821,6 @@
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
"dev": true
},
- "node_modules/@types/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/semver": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
@@ -1480,12 +1472,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "dev": true
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -2354,27 +2340,27 @@
}
},
"node_modules/eslint": {
- "version": "8.45.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz",
- "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==",
+ "version": "8.46.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
+ "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.1.0",
- "@eslint/js": "8.44.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.1",
+ "@eslint/js": "^8.46.0",
"@humanwhocodes/config-array": "^0.11.10",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
+ "ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.6.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.2",
+ "espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -2657,17 +2643,17 @@
}
},
"node_modules/eslint-plugin-vue": {
- "version": "9.15.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz",
- "integrity": "sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==",
+ "version": "9.16.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.16.0.tgz",
+ "integrity": "sha512-SonAuvQXFm9HBV9ww/YkYZVYPMR8ptxxuJwcKGnG9A65SyvNANP9MKlfnC49L6DIwt/YEQZwZWEMHOkL1d5s1A==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.3.0",
+ "@eslint-community/eslint-utils": "^4.4.0",
"natural-compare": "^1.4.0",
- "nth-check": "^2.0.1",
- "postcss-selector-parser": "^6.0.9",
- "semver": "^7.3.5",
- "vue-eslint-parser": "^9.3.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.13",
+ "semver": "^7.5.4",
+ "vue-eslint-parser": "^9.3.1",
"xml-name-validator": "^4.0.0"
},
"engines": {
@@ -2678,9 +2664,9 @@
}
},
"node_modules/eslint-scope": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz",
- "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==",
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
@@ -2694,9 +2680,9 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
- "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
+ "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5769,25 +5755,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/sitemap": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz",
- "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==",
- "dev": true,
- "dependencies": {
- "@types/node": "^17.0.5",
- "@types/sax": "^1.2.1",
- "arg": "^5.0.0",
- "sax": "^1.2.4"
- },
- "bin": {
- "sitemap": "dist/cli.js"
- },
- "engines": {
- "node": ">=12.0.0",
- "npm": ">=5.6.0"
- }
- },
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -6682,9 +6649,9 @@
}
},
"node_modules/vite": {
- "version": "4.4.6",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.6.tgz",
- "integrity": "sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==",
+ "version": "4.4.7",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.7.tgz",
+ "integrity": "sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==",
"dev": true,
"dependencies": {
"esbuild": "^0.18.10",
@@ -6767,9 +6734,9 @@
}
},
"node_modules/vitepress": {
- "version": "1.0.0-beta.6",
- "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-beta.6.tgz",
- "integrity": "sha512-xK/ulKgQpKZVbvlL4+/vW49VG7ySi5nmSoKUNH1G4kM+Cj9JwYM+PDJO7jSJROv8zW99G0ise+maDYnaLlbGBQ==",
+ "version": "1.0.0-beta.7",
+ "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-beta.7.tgz",
+ "integrity": "sha512-P9Rw+FXatKIU4fVdtKxqwHl6fby8E/8zE3FIfep6meNgN4BxbWqoKJ6yfuuQQR9IrpQqwnyaBh4LSabyll6tWg==",
"dev": true,
"dependencies": {
"@docsearch/css": "^3.5.1",
@@ -6783,7 +6750,7 @@
"mark.js": "8.11.1",
"minisearch": "^6.1.0",
"shiki": "^0.14.3",
- "vite": "^4.4.6",
+ "vite": "^4.4.7",
"vue": "^3.3.4"
},
"bin": {
diff --git a/website/package.json b/website/package.json
index f21d2d6f..7c6fd992 100644
--- a/website/package.json
+++ b/website/package.json
@@ -12,8 +12,9 @@
"url": "https://github.com/tachiyomiorg/website/issues"
},
"scripts": {
+ "test": "npm run lint && npm run build && npm run preview",
"dev": "vitepress dev src",
- "build": "npm run lint && vitepress build src",
+ "build": "vitepress build src",
"preview": "vitepress preview src",
"lint": "npm run lint:es && npm run lint:prettier && npm run lint:mdl && npm run lint:style",
"lint:fix": "npm run lint:es:fix && npm run lint:prettier:fix && npm run lint:style:fix",
@@ -35,9 +36,9 @@
"@mdit/plugin-tab": "^0.4.8",
"@typescript-eslint/eslint-plugin": "^6.2.0",
"@typescript-eslint/parser": "^6.2.0",
- "eslint": "^8.45.0",
+ "eslint": "^8.46.0",
"eslint-config-standard": "^17.1.0",
- "eslint-plugin-vue": "^9.15.1",
+ "eslint-plugin-vue": "^9.16.0",
"feed": "^4.2.2",
"lint-staged": "^13.2.3",
"markdown-it-mdi": "^0.1.0",
@@ -45,12 +46,11 @@
"markdownlint-cli": "^0.35.0",
"prettier": "^3.0.0",
"sentences-per-line": "^0.2.1",
- "sitemap": "^7.1.1",
"stylelint": "^15.10.2",
"stylelint-stylus": "^0.18.0",
"stylus": "^0.59.0",
"vite-plugin-eslint": "^1.8.1",
- "vitepress": "^1.0.0-beta.6",
+ "vitepress": "^1.0.0-beta.7",
"vue": "^3.3.4",
"vue-eslint-parser": "^9.3.1"
},
diff --git a/website/src/.vitepress/config/hooks/generateSitemap.ts b/website/src/.vitepress/config/hooks/generateSitemap.ts
deleted file mode 100644
index 1cc3b26d..00000000
--- a/website/src/.vitepress/config/hooks/generateSitemap.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { createContentLoader } from "vitepress";
-import type { SiteConfig } from "vitepress";
-
-import { createWriteStream } from "node:fs";
-import { resolve } from "node:path";
-import { SitemapStream } from "sitemap";
-
-const generateSitemap = async (context: SiteConfig, hostname: string) => {
- const { outDir } = context;
-
- const sitemap = new SitemapStream({ hostname: hostname });
- const pages = await createContentLoader("**/*.md").load();
- const writeStream = createWriteStream(resolve(outDir, "sitemap.xml"));
-
- sitemap.pipe(writeStream);
- pages.forEach((page) => sitemap.write(page.url.replace(/index$/g, "").replace(/^\/src/, "")));
- sitemap.end();
-
- await new Promise((r) => writeStream.on("finish", r));
-};
-
-export default generateSitemap;
diff --git a/website/src/.vitepress/config/index.ts b/website/src/.vitepress/config/index.ts
index 269b84ba..0f477731 100644
--- a/website/src/.vitepress/config/index.ts
+++ b/website/src/.vitepress/config/index.ts
@@ -7,7 +7,6 @@ import head from "./head";
import "./icons";
import generateMeta from "./hooks/generateMeta";
-import generateSitemap from "./hooks/generateSitemap";
import generateFeed from "./hooks/generateFeed";
const hostname: string = "https://kodo.moe";
@@ -23,12 +22,14 @@ export default ({ mode }) => {
lang: "en-US",
title: "Tachiyomi",
description: "Read your favorite manga, webtoons, comics, and more – easier than ever on your Android.",
+ /*sitemap: {
+ hostname: "https://kodo.moe",
+ },*/
head,
markdown,
themeConfig: themeConfig,
transformHead: async (context) => generateMeta(context, hostname),
buildEnd: async (context) => {
- generateSitemap(context, hostname);
generateFeed(context, hostname);
},
});
diff --git a/website/src/.vitepress/theme/index.ts b/website/src/.vitepress/theme/index.ts
index 8c930204..03fb4d20 100644
--- a/website/src/.vitepress/theme/index.ts
+++ b/website/src/.vitepress/theme/index.ts
@@ -1,12 +1,15 @@
// https://vitepress.dev/guide/custom-theme
import { h } from "vue";
import Theme from "vitepress/theme";
-import CustomLayout from "./layouts/CustomLayout.vue";
import "./styles/base.styl";
export default {
extends: Theme,
- Layout: CustomLayout,
+ Layout: () => {
+ return h(Theme.Layout, null, {
+ // https://vitepress.dev/guide/extending-default-theme#layout-slots
+ });
+ },
enhanceApp({ app, router, siteData }) {
// ...
},
diff --git a/website/src/.vitepress/theme/layouts/CustomLayout.vue b/website/src/.vitepress/theme/layouts/CustomLayout.vue
deleted file mode 100644
index 1398f258..00000000
--- a/website/src/.vitepress/theme/layouts/CustomLayout.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-