Model or dataset
wangtunan/blog avatar
wangtunan/blog

wangtunan/blog: a VuePress 2 technical blog you can fork and rebuild

:memo: 记录个人博客,见证成长之路 https://wangtunan.github.io/blog/

391 stars66 forksShellLicense varies

At a glance

What is it?
wangtunan/blog is a personal Chinese-language technical blog built on VuePress 2, covering RAG, agents, Python, Vue source analysis, LeetCode and TypeScript. It is a content repository with a build script, not a library, and that shapes everything about whether you should use it.
Who is it for?
Adopt it if you want a working example of a VuePress 2 site with math, comments, Baidu analytics and Prism highlighting already wired together, or if you want Chinese-language notes on RAG, agents, Vue internals and LeetCode. Do not adopt it if you need an English-language course, a versioned release you can pin, or a maintained library with an API surface.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Activity is slowing. The repository last received commits 6 months ago.
What is it written in?
Mainly Shell, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What wangtunan/blog actually is, and who it is for

This repository is the source of a personal blog published at wangtunan.github.io/blog/. The README describes it as a record of a personal blog and a path of growth, and the table of contents lists the material: RAG basics, agent basics, a Python quick start and advanced tricks, a front-end interview guide, reading notes on JavaScript books, Vue 2 and Vue 3 source analysis, data structures and algorithms, LeetCode practice, Webpack 4, Rollup, Vite, TypeScript basics and type challenges, SASS, Vue application testing, and VuePress itself. The primary language is listed as Shell, which reflects the deploy script rather than the content: the prose is Chinese, and the code samples are JavaScript, TypeScript, Python and shell.

The audience is narrow and specific. Someone preparing for a Chinese front-end interview will find a dedicated guide. Someone learning retrieval-augmented generation or agent patterns in Chinese will find an introductory pair of pages. Someone reading Vue internals will find two source-analysis tracks. If you do not read Chinese, almost none of this is usable, and the README does not present an English edition. That is the first filter, and it is a hard one.

The second filter is what the repository is not. There is no published package, no release, and no importable module. The README mentions a Gitee mirror and marks it as deprecated, so the GitHub Pages site is the live target. You consume this as a reader or as a fork, not as a dependency.

The VuePress 2 build: what the package.json reveals

The mechanism is a static site generator. package.json sets "type": "module" and declares three scripts: dev runs vuepress dev docs, build runs vuepress build docs, and depoly runs depoly.sh. The typo in the script name is in the file, so that is the name you type. Content lives in docs/, which is the only top-level directory besides .github/, .vscode/ and the README, the deploy script and the donation image.

The dependency list is where the site's behaviour comes from. vuepress is pinned to ^2.0.0-rc.21, and the bundler is @vuepress/bundler-vite at the same range. The plugin set is @vuepress/plugin-baidu-analytics, @vuepress/plugin-comment, @vuepress/plugin-markdown-math, @vuepress/plugin-register-components, @vuepress/plugin-prismjs, plus the default theme at ^2.0.0-rc.94. katex and sass-embedded are direct dependencies, which matches a blog that renders mathematical notation and styles with SCSS. Everything is on release-candidate ranges, not stable majors. That is a deliberate trade: the site gets current plugin behaviour, and every install resolves within a moving pre-release line.

The data flow is ordinary for this class of tool. Markdown and Vue components under docs/ are compiled by Vite into static assets, plugins inject analytics and comment widgets into the rendered pages, and the output is published to GitHub Pages. The README embeds a Repobeats analytics image, which means commit activity is rendered on the repository page itself; that is decoration, not a signal about code quality.

Running the blog locally

There are no installation instructions in the README, so the steps below come from package.json. You need Node.js and a package manager; the repository does not pin a Node version, so use a current LTS release and expect the VuePress 2 release candidates to be sensitive to it. Clone the repository, install, and start the dev server.

bash
git clone https://github.com/wangtunan/blog.git
cd blog
npm install
npm run dev

The dev script passes docs as the source directory, so VuePress serves the site with hot reload and prints a local URL, conventionally on port 8080. Open that URL and you should see the blog index with the same sections the README lists. If a plugin fails to resolve, the error names the package, and the fix is on the dependency side rather than in the content.

To produce the static output instead, run the build script. It writes to a dist directory inside docs by VuePress convention.

bash
npm run build

The deploy script is the third entry. It is a shell file at the repository root, and package.json exposes it as npm run depoly. The README does not document what it does, whether it pushes to a branch, or how it authenticates, so read depoly.sh before running it against your own account.

Where this repository will let you down

The licence is unknown. The repository listing has no licence identifier and the README does not state one. For a reader that is an inconvenience; for anyone who wants to reuse the prose or the code samples in their own course, book or product, it is a blocker. Absence of a licence is not permission.

The dependency line is a second risk. Every VuePress package sits on a 2.0.0 release-candidate range. Release candidates change between patches, and the plugin packages are at rc.94 while the core is at rc.21. Installing today and installing in six months can produce different trees. There is no lockfile in the top-level entries listed, so nothing in the repository pins the resolution for you.

There is also no release history. The repository has no retrieved releases, which means there is no changelog to read when something breaks and no version to cite. Maintenance is visible only through commits: the last push was on 2026-03-13. That is recent enough that the site is not abandoned, but a personal blog's commit cadence follows the author's writing, not a support commitment. Do not expect issues to be triaged.

Finally, the content is a snapshot of one person's study notes. RAG and agent material moves quickly, and the README gives no indication of when those two pages were last revised. Treat them as an introduction, not as current best practice.

Alternatives and how they differ

The closest structural alternative is a documentation framework that ships a versioned package and a stable release line, such as Docusaurus or a plain static site generator with a Markdown pipeline you configure yourself. The difference is in what you inherit. wangtunan/blog hands you a finished site with math rendering, comments, Baidu analytics and Prism highlighting already selected and configured in package.json, at the cost of living on release candidates and having no lockfile. A framework you assemble yourself gives you a stable core and makes you choose each plugin, which is more work and fewer surprises.

If your goal is learning Vue internals rather than running a blog, the alternative is the official Vue documentation and the framework's own source repository. Those are maintained by the project team and versioned. This blog's Vue 2 and Vue 3 analysis pages are one reader's walkthrough; they are useful for a second explanation of a concept, not as a reference that tracks upstream changes.

If your goal is Chinese-language interview preparation, the alternative is a question bank or a course with an update schedule. This repository's interview guide is a fixed set of pages with no stated revision date.

Maintenance, upgrades and licence exposure

Upgrade cost is concentrated in one file. Because package.json uses caret ranges on 2.0.0-rc versions, npm install can move you to a newer release candidate of the same minor line without any change on your side. The practical mitigation is to commit a lockfile after your first successful install, which the repository does not appear to include. Then upgrades become deliberate: change the range, reinstall, run npm run build, and check that the math and comment plugins still render.

The plugin versions are not aligned. Core VuePress and the Vite bundler are on rc.21, while the plugins and the default theme are on rc.94. When you upgrade, move them together and read the VuePress 2 release notes for breaking changes between those candidate numbers, because the README offers no migration guidance.

On licensing: the repository provides no licence file and no licence statement, so the default position is that all rights are reserved by the author. That affects redistribution of the prose and the code samples. It does not prevent you from cloning the repository to read it or to run it locally. If you need to reuse the content in a way that depends on a permissive grant, ask the author or look elsewhere. This is a description of the repository state, not legal advice.

Editorial conclusion

Adopt it if you want a working example of a VuePress 2 site with math, comments, Baidu analytics and Prism highlighting already wired together, or if you want Chinese-language notes on RAG, agents, Vue internals and LeetCode. Do not adopt it if you need an English-language course, a versioned release you can pin, or a maintained library with an API surface. Before you invest time, open docs/ and check that the topic list in the README still maps to real files, and confirm the licence, which the repository does not state.

Frequently asked questions

How do I run wangtunan/blog locally?

Clone the repository, run npm install, then npm run dev, which executes vuepress dev docs and serves the site with hot reload. The README does not give these steps; they come from the scripts in package.json.

What topics does wangtunan/blog cover?

The README lists RAG basics, agent basics, Python, a front-end interview guide, JavaScript book notes, Vue 2 and Vue 3 source analysis, data structures and algorithms, LeetCode, Webpack 4, Rollup, Vite, TypeScript, SASS, Vue application testing and VuePress.

What licence does wangtunan/blog use?

The repository does not state a licence, and the listing shows no licence identifier. That means reuse of the prose or code samples is not granted by anything in the repository.

Is wangtunan/blog still updated?

The last push to the repository was on 2026-03-13, and the repository is not archived. Commit activity follows the author's writing rather than a published support schedule.

Can I use wangtunan/blog as a dependency in my project?

No. There is no published package and no release; the repository is a VuePress 2 site source with a dev, build and deploy script. You fork it or read it, you do not import it.

Official sources

  1. Issues
  2. README
  3. wangtunan/blog on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/wangtunan-blog.svg)](https://hysenlabs.com/projects/wangtunan-blog)