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 @@ - - -