vuepress-next
Status: Beta
The codebase has been completely refactored with TypeScript. Some major changes:
- Fully migrated to Vue 3
- Extract
@vuepress/cli
fromvuepress
package - Extract
@vuepress/client
from@vuepress/core
package - Extract
@vuepress/plugin-palette
from@vuepress/core
package - stylus is no longer the default CSS pre-processor, and the way of styles customization should be determined by theme - Extract
@vuepress/bundler-webpack
from@vuepress/core
package and migrate to webpack 5 - Provide
@vuepress/bundler-vite
for Vite support
The migration guide has not finished yet. For now you can check out the breaking changes list below as reference.
Documentation
Contribution
See Contributing Guide.
Breaking Changes
Temporarily record some breaking changes here.
Core
User config
shouldPrefetch
-> the default value is changed tofalse
patterns
->pagePatterns
extraWatchFiles
-> removed, watch files manually inonWatched
hookevergreen
-> the default value is changed totrue
markdown
markdown.lineNumbers
->markdown.code.lineNumbers
, and the default value is changed totrue
markdown.slugify
-> removedmarkdown.pageSuffix
-> removedmarkdown.externalLinks
->markdown.links.externalAttrs
markdown.toc
-> changedmarkdown.plugins
-> removedmarkdown.extendMarkdown
-> removedmarkdown.extractHeaders
-> changed
- All webpack related configs are moved to
bundlerConfig
(with@vuepress/bundler-webpack
)postcss
->bundlerConfig.postcss
stylus
->bundlerConfig.stylus
scss
->bundlerConfig.scss
sass
->bundlerConfig.sass
less
->bundlerConfig.less
chainWebpack
->bundlerConfig.chainWebpack
configureWebpack
->bundlerConfig.configureWebpack
Conventional files and directories
.vuepress/enhanceApp.js
->.vuepress/clientAppEnhance.{js,ts}
.vuepress/components
-> will not auto register components, and you need to register your components manually in.vuepress/clientAppEnhance.{js,ts}
Permalink patterns
:i_month
-> removed:i_day
-> removed:minutes
-> removed (undocumented in 1.0):seconds
-> removed (undocumented in 1.0):regular
->:raw
Stylus Palette system
The stylus palette system of VuePress v1 (i.e. styles/palette.styl
and styles/index.styl
) is extracted to @vuepress/plugin-palette
.
Theme authors can use their own way for users to configure styles (not be limited with stylus).
Frontmatter
-
meta
->head
, which uses the same type withsiteConfig.head
For example:
head: - - meta - name: foo content: bar - - link - rel: canonical href: foobar - - script - {} - console.log('hello from frontmatter');
Has the same structure with:
// .vuepress/config.js module.exports = { // ... head: [ ['meta', { name: 'foo', content: 'bar' }], ['link', { rel: 'canonical', href: 'foobar' }], ['script', {}, `console.log('hello from frontmatter');`], ], // ... }
Plugin API
ready
->onPrepared
updated
->onWatched
generated
->onGenerated
additionalPages
-> removed, useapp.pages.push(createPage())
inonInitialized
hookclientDynamicModules
-> removed, useapp.writeTemp()
inonPrepared
hookenhanceAppFiles
->clientAppEnhanceFiles
globalUIComponents
->clientAppRootComponentFiles
clientRootMixin
->clientAppSetupFiles
extendMarkdown
->extendsMarkdown
chainMarkdown
-> removedextendPageData
->extendsPageData
extendsCli
-> removedconfigureWebpack
-> removedchainWebpack
-> removedbeforeDevServer
-> removedafterDevServer
-> removed
Theme API
-
.vuepress/theme
-> won't be used as theme implicitly if the path exists, and set the path explicitly viatheme
option. -
extend
->extends
You can still inherit a parent theme with
extends: 'parent-theme'
, which will extends the plugins, layouts, etc.However, the
@theme
and@parent-theme
aliases are not available now.
CLI
eject
command -> removed-c, --cache [cache]
->--cache <cache>
- the shorthand-c
is not forcache
option, and the value ofcache
option is not optional--no-cache
->--clean-cache
Default Theme
<CodeGroup />
,<CodeBlock />
-><CodeGroup />
,<CodeGroupItem />
<Badge />
$badgeErrorColor
->$badgeDangerColor
type
prop only acceptstip
,warning
anddanger
- Default theme config has changed a lot. Please refer to the documentation.