Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f6ffc04
output type definitions and adjust package.json so that types are pic…
trusktr Mar 28, 2024
2387399
ignore dist in prettierignore
trusktr Mar 28, 2024
1a352af
deprecate globals and global script data-* attributes, and set up the…
trusktr Apr 1, 2024
355469f
add dist to eslintignore
trusktr Apr 2, 2024
4a867ad
fix typo
trusktr Apr 2, 2024
c860c65
Merge branch 'develop' into type-definitions
trusktr Nov 16, 2025
482297a
fix many type errors by adding type declarations, suppress ~600 error…
trusktr Nov 16, 2025
6aa8831
update DocsifyConfig types and docs, improve/fix a few types, and add…
trusktr Nov 17, 2025
a0a3b78
hook the consume-types test into CI
trusktr Nov 17, 2025
585b7d3
quotes messing windows up?
trusktr Nov 17, 2025
da6f92b
fix e2e tests that failed on the added deprecation messages
trusktr Nov 17, 2025
4b6f2d3
fix formatting
trusktr Nov 17, 2025
a042aca
remove deprecation messages from global API
trusktr Nov 17, 2025
f672341
Update src/core/event/index.js
trusktr Nov 18, 2025
cb41307
remove unnecessary boolean type from `repo` option
trusktr Nov 18, 2025
08d4a65
Merge branch 'type-definitions' of github.com:docsifyjs/docsify into …
trusktr Nov 18, 2025
512ab8d
Fix spelling error in test/consume-types/README.md (#2630)
Copilot Nov 18, 2025
dedc3b8
Remove dead code in getNode Vue detection (#2631)
Copilot Nov 18, 2025
73fd804
fix type error
trusktr Nov 18, 2025
97472a7
Merge branch 'develop' into type-definitions
trusktr Nov 20, 2025
71a7db4
Merge branch 'develop' into type-definitions
trusktr Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ jobs:
run: npm run test:unit -- --ci --runInBand
- name: Integration Tests
run: npm run test:integration -- --ci --runInBand
- name: Consumption Tests
run: npm run test:consume-types

test-playwright:
runs-on: ubuntu-latest
Expand Down
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
.vercel
_playwright-report
_playwright-results
dist
lib
node_modules

# Files
Expand All @@ -14,3 +12,10 @@ node_modules

# Exceptions
!.gitkeep

# Output folder for the global build only
dist

# TypeScript declaration files for standard ESM consumption
src/**/*.d.ts
src/**/*.d.ts.map
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ _vars.css
_vars-advanced.css
CHANGELOG.md
emoji-data.*
HISTORY.md
HISTORY.md
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"cSpell.words": ["coverpage"]
"cSpell.words": ["coverpage"],
"typescript.tsdk": "node_modules/typescript/lib"
}
35 changes: 32 additions & 3 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ window.$docsify = {

## name

- Type: `String`
- Type: `Boolean | String`

Website name as it appears in the sidebar.

Expand All @@ -474,6 +474,22 @@ window.$docsify = {
};
```

If `true`, the website name will be inferred from the document's `<title>` tag.

```js
window.$docsify = {
name: true,
};
```

If `false` or empty, no name will be displayed.

```js
window.$docsify = {
name: false,
};
```

## nameLink

- Type: `String`
Expand Down Expand Up @@ -652,6 +668,10 @@ window.$docsify = {
};
```

## plugins

See [Plugins](./plugins.md).

## relativePath

- Type: `Boolean`
Expand Down Expand Up @@ -706,6 +726,8 @@ window.$docsify = {
};
```

If undefined or empty, no GitHub corner will be displayed.

## requestHeaders

- Type: `Object`
Expand Down Expand Up @@ -887,9 +909,9 @@ window.$docsify = {
Determines if/how the site's [skip navigation link](https://webaim.org/techniques/skipnav/) will be rendered.

```js
// Render skip link for all routes (default)
// Render skip link for all routes
window.$docsify = {
skipLink: 'Skip to main content',
skipLink: 'Skip to content',
};
```

Expand All @@ -912,6 +934,13 @@ window.$docsify = {
};
```

```js
// Use default
window.$docsify = {
skipLink: true, // "Skip to main content"
};
```

## subMaxLevel

- Type: `Number`
Expand Down
6 changes: 5 additions & 1 deletion docs/plugins.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# List of Plugins

These are built-in and external plugins for Docsify.

See also how to [Write a Plugin](./write-a-plugin.md).

## Full text search

By default, the hyperlink on the current page is recognized and the content is saved in `IndexedDB`. You can also specify the path to the files.
Expand All @@ -25,7 +29,7 @@ By default, the hyperlink on the current page is recognized and the content is s
insertBefore: '.sidebar-nav', // CSS selector in .sidebar scope
maxAge: 86400000, // Expiration time, the default one day
paths: [], // or 'auto'
paths: [], // string[] of files to search in, or 'auto' for discovery based on your sidebar
placeholder: 'Type to search',
// Localization
Expand Down
25 changes: 21 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 16 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,22 @@
},
"type": "module",
"main": "dist/docsify.js",
"types": "src/core/Docsify.d.ts",
"exports": {
".": "./src/core/Docsify.js",
"./*": "./*"
},
"files": [
"dist"
"dist",
"src"
],
"lint-staged": {
"*.js": "eslint --fix"
},
"dependencies": {
"common-tags": "^1.8.0",
"dexie": "^4.0.11",
"marked": "^16.0.0",
"medium-zoom": "^1.1.0",
"opencollective-postinstall": "^2.0.2",
"prismjs": "^1.29.0",
Expand All @@ -51,10 +55,11 @@
"@rollup/plugin-node-resolve": "^16.0.0",
"@rollup/plugin-replace": "^6.0.1",
"@rollup/plugin-terser": "^0.4.3",
"@types/common-tags": "^1.8.4",
"@types/eslint": "^8.40.2",
"@types/prismjs": "^1.26.5",
"axios": "^1.5.0",
"browser-sync": "^3.0.2",
"common-tags": "^1.8.0",
"conventional-changelog-cli": "^3.0.0",
"cross-env": "^10.0.0",
"cssnano": "^7.0.1",
Expand All @@ -69,7 +74,6 @@
"jest": "^30.0.4",
"jest-environment-jsdom": "^30.0.5",
"lint-staged": "^16.1.0",
"marked": "^16.0.0",
"npm-run-all": "^4.1.5",
"postcss-cli": "^11.0.0",
"postcss-import": "^16.1.0",
Expand All @@ -78,6 +82,7 @@
"rimraf": "^6.1.0",
"rollup": "^4.17.2",
"rollup-plugin-import-css": "^4.0.1",
"typescript": "^5.9.3",
"vue": "^3.4.27",
"xhr-mock": "^2.5.1"
},
Expand All @@ -87,8 +92,9 @@
"build:css:min": "cross-env NODE_ENV='production' npm run build:css -- --ext .min.css",
"build:emoji": "node ./build/emoji.js",
"build:js": "rollup -c",
"build": "run-s clean build:js build:css build:css:min build:cover",
"clean": "rimraf --glob dist/** themes/** _playwright*/**",
"build:types": "tsc",
"build": "run-s clean build:types build:js build:css build:css:min build:cover",
"clean": "rimraf --glob \"dist/**\" \"themes/**\" \"_playwright*/**\" \"src/**/*.d.ts\" \"src/**/*.d.ts.map\"",
"dev": "run-p serve:dev watch:*",
"docker:build:test": "npm run docker:cli -- build:test",
"docker:build": "docker build -f Dockerfile -t docsify-test:local .",
Expand All @@ -111,11 +117,15 @@
"test:e2e": "playwright test",
"test:e2e:chromium": "playwright test --project='chromium'",
"test:e2e:ui": "playwright test --ui",
"test:e2e:consume-types": "echo TODO: test the consume-types example with ESM modules",
"test:integration": "npm run test:jest -- --selectProjects integration",
"test:jest": "cross-env NODE_OPTIONS=--experimental-vm-modules jest",
"test:unit": "npm run test:jest -- --selectProjects unit",
"test:update:snapshot": "npm run test:jest -- --updateSnapshot",
"test": "run-s test:jest test:e2e",
"test:consume-types": "cd test/consume-types && npm clean-install --install-links && npm run typecheck",
"test": "run-s test:jest test:e2e test:consume-types",
"typecheck": "tsc --noEmit",
"typecheck:watch": "tsc --noEmit --watch",
"watch:css": "run-p 'build:css -- --watch' 'build:css:min -- --watch'",
"watch:js": "npm run build:js -- --watch"
}
Expand Down
20 changes: 18 additions & 2 deletions src/core/Docsify.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import prism from 'prismjs';
import { Router } from './router/index.js';
import { Render } from './render/index.js';
import { Fetch } from './fetch/index.js';
Expand All @@ -8,16 +9,29 @@ import config from './config.js';
import { isFn } from './util/core.js';
import { Lifecycle } from './init/lifecycle.js';

export { prism };
export { marked } from 'marked';
export * as util from './util/index.js';
export * as dom from './util/dom.js';
export { Compiler } from './render/compiler.js';
export { slugify } from './render/slugify.js';
export { get } from './util/ajax.js';

/** @typedef {new (...args: any[]) => any} Constructor */
/** @typedef {import('./config.js').DocsifyConfig} DocsifyConfig */

export class Docsify extends Fetch(
Events(Render(VirtualRoutes(Router(Lifecycle(Object))))),
) {
config = config(this);
/** @type {DocsifyConfig} */
config;

constructor() {
/** @param {Partial<DocsifyConfig>} conf */
constructor(conf = {}) {
super();

this.config = config(this, conf);

this.initLifecycle(); // Init hooks
this.initPlugin(); // Install plugins
this.callHook('init');
Expand Down Expand Up @@ -45,3 +59,5 @@ export class Docsify extends Fetch(
});
}
}

export const version = '__VERSION__';
Loading
Loading