diff --git a/docs/.gitignore b/docs/.gitignore
index 26d6131..41eaf24 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,2 +1,4 @@
/vendor
/node_modules
+/docs/.vitepress/dist
+/docs/.vitepress/cache
diff --git a/docs/Dockerfile b/docs/Dockerfile
index 3dba116..f73791f 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,5 +1,7 @@
-ARG TAG=14-alpine
-FROM nystudio107/node-dev-base:$TAG
+ARG TAG=20-alpine
+FROM node:$TAG
+
+RUN npm install -g npm@^10.0.0
WORKDIR /app/
diff --git a/docs/Makefile b/docs/Makefile
index 8a896b2..5ac9b4e 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,45 +1,47 @@
-TAG?=14-alpine
-CONTAINER?=$(shell basename $(dir $(CURDIR)))-docs
-DOCKERRUN=docker container run \
- --name ${CONTAINER} \
- --rm \
- -p 3002:3002 \
- -t \
- -v `pwd`:/app \
- ${CONTAINER}:${TAG}
-DOCSDEST?=../../../sites/nystudio107/web/docs/disqus
+MAJOR_VERSION?=4
+TAG?=20-alpine
+CONTAINER?=$(shell basename $(dir $(CURDIR)))-v${MAJOR_VERSION}-docs
+DOCS_DEV_PORT?=400${MAJOR_VERSION}
+DOCS_DEST?=../../../sites/nystudio107/web/docs/disqus/v4
+IMAGE_INFO=$(shell docker image inspect $(CONTAINER):$(TAG))
+IMAGE_NAME=${CONTAINER}:${TAG}
+DOCKER_RUN=docker container run --rm -it -v "${CURDIR}":/app
-.PHONY: docker build dev fix install lint clean npm
+.PHONY: build clean dev fix image-build image-check lint npm ssh
-docker:
- docker build \
- . \
- -t ${CONTAINER}:${TAG} \
- --build-arg TAG=${TAG} \
- --no-cache
-build: docker install
- ${DOCKERRUN} \
- run docs:build
- rm -rf ${DOCSDEST}
- mv ./docs/.vitepress/dist ${DOCSDEST}
-dev: docker install
- ${DOCKERRUN} \
- run docs:dev
-fix: docker install
- ${DOCKERRUN} \
- run docs:fix
-install: docker
- ${DOCKERRUN} \
- install
-lint: docker install
- ${DOCKERRUN} \
- run docs:lint
+# Perform a dist build via npm run docs:build
+build: image-check
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} run docs:build
+ rm -rf ${DOCS_DEST}
+ mv ./docs/.vitepress/dist ${DOCS_DEST}
+# Remove node_modules/ & package-lock.json
clean:
rm -rf node_modules/
rm -f package-lock.json
-npm: docker
- ${DOCKERRUN} \
- $(filter-out $@,$(MAKECMDGOALS))
+# Run the development server via npm run docs:dev
+dev: image-check
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ -e DOCS_DEV_PORT="${DOCS_DEV_PORT}" -p ${DOCS_DEV_PORT}:${DOCS_DEV_PORT} ${IMAGE_NAME} run docs:dev
+# Fix the docs with textlint via npm run docs:fix
+fix: image-check
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} run docs:fix
+# Build the Docker image & run npm install
+image-build:
+ docker build . -t ${IMAGE_NAME} --build-arg TAG=${TAG} --no-cache
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} install
+# Ensure the image has been created
+image-check:
+ifeq ($(IMAGE_INFO), [])
+image-check: image-build
+endif
+# Lint the docs with textlint via npm run docs:lint
+lint: image-check
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} run docs:lint
+# Run the passed in npm command
+npm: image-check
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} $(filter-out $@,$(MAKECMDGOALS)) $(MAKEFLAGS)
+# Open a shell inside of the container
+ssh: image-check
+ ${DOCKER_RUN} --name ${CONTAINER}-$@ --entrypoint=/bin/sh ${IMAGE_NAME}
%:
@:
# ref: https://stackoverflow.com/questions/6273608/how-to-pass-argument-to-makefile-from-command-line
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..1ca291d
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,74 @@
+# `vite` docs
+
+This buildchain is a self-contained build system for the `vite` documentation.
+
+## Overview
+
+The buildchain uses [VitePress](https://vitepress.dev/) via a Docker container to facilitate writing the docs as [markdown](https://vitepress.dev/guide/markdown), linting them via [textlint](https://textlint.github.io/), building them as HTML files with bundled assets, and publishing them automatically via a [GitHub action](https://docs.github.com/en/actions).
+
+It also uses a [Rollup](https://rollupjs.org/) [sitemap plugin](https://github.com/aminnairi/rollup-plugin-sitemap) to generate a `sitemap.xml` for the generated docs.
+
+The markdown sources for the docs and assets are in the `docs/docs/` directory.
+
+The built distribution docs are created via the `build-and-deploy-docs.yaml`
+
+## Prerequisites
+
+To run the buildchain for development purposes:
+
+- You must have [Docker Desktop](https://www.docker.com/products/docker-desktop/) (or the equivalent) installed
+
+## Commands
+
+This buildchain uses `make` as an interface to the buildchain. The following commands are available from the `buildchain/` directory:
+
+- `make image-build` - Build the Docker image & run `npm install`. This command must be run once before using the Docker container.
+- `make dev` - Start Vite HMR dev server while writing/editing the docs. Click on the link displayed in the terminal to open the docs up
+- `make lint` - Run `textlint` on the docs, reporting on any errors and warnings
+- `make fix` - Run `textlint` on the docs, automatically fixing any errors, and reporting any warnings
+- `make clean` - Remove `node_modules/` and `package-lock.json` to start clean (need to run `make image-build` after doing this, see below)
+- `make npm XXX` - Run an `npm` command inside the container, e.g.: `make npm run lint` or `make npm install`
+- `make ssh` - Open up a shell session into the buildchain Docker container
+- `make build` - Do a local distribution build of the docs; normally not needed since they are built & deployed via GitHub action
+
+## Docs versioning
+
+Each major version of the plugin corresponds to a major version of Craft.
+
+Each major version of the plugin has separate documentation that needs to be updated when changes span plugin versions.
+
+The latest version of the docs that correspond to the latest version of the plugin is always the root of the docs tree, with older versions appearing in sub-directories:
+
+```
+│ index.html
+├── v4
+│ └── index.html
+├── v3
+│ └── index.html
+```
+
+The docs are entirely separate, but linked to eachother via a version menu, configured in the `docs/docs/.vitepress/config.ts` file.
+
+## Algolia Docsearch
+
+The docs uses [Algolia Docsearch](https://docsearch.algolia.com/) to index them, and allow for easy searching via a search field with auto-complete.
+
+Algolia Docsearch is configured in the `docs/docs/.vitepress/config.ts` file.
+
+## textlint
+
+The buildchain uses [textlint](https://textlint.github.io/) to automatically fix errors on build, and also issue writing style warnings.
+
+`textlint` automatically uses any rules added to the `docs/package.json` file, which can be overridden or customized via the `docs/.textlintrc.js` file.
+
+See the [textlint docs](https://textlint.github.io/docs/getting-started.html) for details.
+
+## Overriding environment variables
+
+The `Makefile` contains sane defaults for most things, but you can override them via environment variables if you need to.
+
+For instance, if you want to change the `DOCS_DEST` environment variable to change where `make build` builds the docs locally, you can set it before running any buildchain `make` commands:
+```bash
+env DOCS_DEST=../path/to/some/dir make build
+```
+...or use any other method for [setting environment variables](https://www.twilio.com/blog/how-to-set-environment-variables.html). This environment variable needs to be set in the shell where you run the buildchain's various `make` commands from, so setting it in your project's `.env` file won't work.
diff --git a/docs/docs/.vitepress/config.js b/docs/docs/.vitepress/config.js
deleted file mode 100644
index dce0a61..0000000
--- a/docs/docs/.vitepress/config.js
+++ /dev/null
@@ -1,26 +0,0 @@
-module.exports = {
- title: 'Disqus Plugin Documentation',
- description: 'Documentation for the Disqus plugin',
- base: '/docs/disqus/',
- lang: 'en-US',
- head: [
- ['meta', {content: 'https://github.com/nystudio107', property: 'og:see_also',}],
- ['meta', {content: 'https://twitter.com/nystudio107', property: 'og:see_also',}],
- ['meta', {content: 'https://youtube.com/nystudio107', property: 'og:see_also',}],
- ['meta', {content: 'https://www.facebook.com/newyorkstudio107', property: 'og:see_also',}],
- ],
- themeConfig: {
- repo: 'nystudio107/craft-disqus',
- docsDir: 'docs/docs',
- docsBranch: 'v1',
- algolia: {
- appId: '',
- apiKey: '',
- indexName: 'disqus'
- },
- editLinks: true,
- editLinkText: 'Edit this page on GitHub',
- lastUpdated: 'Last Updated',
- sidebar: 'auto',
- },
-};
diff --git a/docs/docs/.vitepress/config.ts b/docs/docs/.vitepress/config.ts
new file mode 100644
index 0000000..0abb0d1
--- /dev/null
+++ b/docs/docs/.vitepress/config.ts
@@ -0,0 +1,48 @@
+import {defineConfig} from 'vitepress'
+
+export default defineConfig({
+ title: 'Vite Plugin',
+ description: 'Documentation for the Vite plugin',
+ base: '/docs/disqus/v4/',
+ lang: 'en-US',
+ head: [
+ ['meta', {content: 'https://github.com/nystudio107', property: 'og:see_also',}],
+ ['meta', {content: 'https://twitter.com/nystudio107', property: 'og:see_also',}],
+ ['meta', {content: 'https://youtube.com/nystudio107', property: 'og:see_also',}],
+ ['meta', {content: 'https://www.facebook.com/newyorkstudio107', property: 'og:see_also',}],
+ ],
+ themeConfig: {
+ socialLinks: [
+ {icon: 'github', link: 'https://github.com/nystudio107'},
+ {icon: 'twitter', link: 'https://twitter.com/nystudio107'},
+ ],
+ logo: '/img/plugin-logo.svg',
+ editLink: {
+ pattern: 'https://github.com/nystudio107/craft-disqus/edit/develop-v4/docs/docs/:path',
+ text: 'Edit this page on GitHub'
+ },
+ algolia: {
+ appId: 'AE3HRUJFEW',
+ apiKey: 'c5dcc2be096fff3a4714c3a877a056fa',
+ indexName: 'disqus',
+ searchParameters: {
+ facetFilters: ["version:v4"],
+ },
+ },
+ lastUpdatedText: 'Last Updated',
+ sidebar: [],
+ nav: [
+ {text: 'Home', link: 'https://nystudio107.com/plugins/disqus'},
+ {text: 'Store', link: 'https://plugins.craftcms.com/disqus'},
+ {text: 'Changelog', link: 'https://nystudio107.com/plugins/disqus/changelog'},
+ {text: 'Issues', link: 'https://github.com/nystudio107/craft-disqus/issues'},
+ {
+ text: 'v4', items: [
+ {text: 'v5', link: 'https://nystudio107.com/docs/disqus/'},
+ {text: 'v4', link: '/'},
+ {text: 'v1', link: 'https://nystudio107.com/docs/disqus/v1/'},
+ ],
+ },
+ ]
+ },
+});
diff --git a/docs/docs/.vitepress/theme/SidebarBottom.vue b/docs/docs/.vitepress/theme/NYSLogo.vue
similarity index 81%
rename from docs/docs/.vitepress/theme/SidebarBottom.vue
rename to docs/docs/.vitepress/theme/NYSLogo.vue
index a2691f3..5a69068 100644
--- a/docs/docs/.vitepress/theme/SidebarBottom.vue
+++ b/docs/docs/.vitepress/theme/NYSLogo.vue
@@ -6,18 +6,15 @@
target="_blank"
rel="noopener"
>
-
+ />
-