Skip to content

Commit d7b7e22

Browse files
authored
update: rc preview version support (#225)
1 parent cc990d3 commit d7b7e22

File tree

7 files changed

+39
-18
lines changed

7 files changed

+39
-18
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ docsify init [path] [--local false] [--theme vue] [--plugins false]
6262
- Type: boolean
6363
- Default: `false`
6464
- Description: Copy `docsify` files to the docs path, defaults to `false` using `cdn.jsdelivr.net` as the content delivery network (CDN). To explicitly set this option to `false` use `--no-local`.
65-
- `--theme` option:
66-
- Shorthand: `-t`
67-
- Type: string
68-
- Default: `vue`
69-
- Description: Choose a theme, defaults to `vue`, other choices are `buble`, `dark` and `pure`.
65+
- `--rcMode` option:
66+
- Shorthand: `--rc`
67+
- Type: boolean
68+
- Default: `false`
69+
- Description: Try `docsify` preview release version (`rc` resource).
7070
- `--plugins` option:
7171
- Shorthand: `-p`
7272
- Type: boolean

lib/cli.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ require('yargs')
3030
requiresArg: false,
3131
type: 'boolean'
3232
},
33+
rcMode: {
34+
alias: 'rc',
35+
default: false,
36+
desc: chalk.gray(y18n.__('init.rc')),
37+
nargs: 0,
38+
requiresArg: false,
39+
type: 'boolean'
40+
},
3341
theme: {
3442
alias: 't',
3543
default: 'vue',
@@ -48,7 +56,7 @@ require('yargs')
4856
type: 'boolean'
4957
}
5058
}),
51-
handler: argv => run.init(argv.path, argv.local, argv.theme, argv.plugins)
59+
handler: argv => run.init(argv.path, argv.local, argv.rcMode, argv.theme, argv.plugins)
5260
})
5361
.command({
5462
command: 'serve [path]',

lib/commands/init.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
const fs = require('fs')
44
const cp = require('cp-file').sync
55
const chalk = require('chalk')
6-
const {version} = require('../../package.json')
6+
const {version: cliVersion} = require('../../package.json')
77
const logger = require('../util/logger')
88
const {prompt, MultiSelect} = require('enquirer')
99
const {cwd, exists, pkg, pwd, read, resolve} = require('../util')
@@ -14,8 +14,12 @@ const replace = function (file, tpl, replace) {
1414
fs.writeFileSync(file, read(file).replace(tpl, replace), 'utf-8')
1515
}
1616

17+
const replaceAll = function (file, tpl, replace) {
18+
fs.writeFileSync(file, read(file).replaceAll(tpl, replace), 'utf-8')
19+
}
20+
1721
// eslint-disable-next-line
18-
module.exports = async function (path = '', local, theme, plugins) {
22+
module.exports = async function (path = '', local, rcMode, theme, plugins) {
1923
const msg =
2024
'\n' +
2125
chalk.green('Initialization succeeded!') +
@@ -48,11 +52,11 @@ module.exports = async function (path = '', local, theme, plugins) {
4852
}
4953
}
5054

51-
await createFile(cwdPath, local, theme, plugins)
55+
await createFile(cwdPath, local, rcMode, theme, plugins)
5256
console.log(msg)
5357
}
5458

55-
async function createFile(path, local, theme, plugins) {
59+
async function createFile(path, local, rcMode, theme, plugins) {
5660
const target = file => resolve(path, file)
5761
const readme = exists(cwd('README.md')) || pwd('template/README.md')
5862
let main = pwd('template/index.html')
@@ -97,6 +101,15 @@ async function createFile(path, local, theme, plugins) {
97101
replace(target(filename), 'repo: \'\'', `repo: '${repo}'`)
98102
}
99103

104+
let resourceVersion = 'rc'
105+
106+
if (!rcMode) {
107+
const {major, prerelease = [], version} = semver.parse(cliVersion) || {}
108+
resourceVersion = prerelease.length ? version : String(major)
109+
}
110+
111+
replaceAll(target(filename), '__docsifyVersion__', `${resourceVersion}`)
112+
100113
// Return early if not opted for plugins
101114
if (!plugins) {
102115
return replace(target(filename), '\n _plugins_', '')
@@ -147,11 +160,8 @@ async function createFile(path, local, theme, plugins) {
147160

148161
replace(target(filename), ' _plugins_', '_plugin'.repeat(answers.length + 1))
149162

150-
const {prerelease = [], major} = semver.parse(version) || {}
151-
const pluginVersion = prerelease.length ? prerelease[0] : String(major)
152-
153163
answers.forEach(plugin => {
154-
const url = `//cdn.jsdelivr.net/npm/docsify@${pluginVersion}/dist/plugins/${plugin}.min.js`
164+
const url = `//cdn.jsdelivr.net/npm/docsify@${resourceVersion}/dist/plugins/${plugin}.min.js`
155165
replace(target(filename), '_plugin', ` <script src="${url}"></script>\n`)
156166
})
157167

lib/template/index.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<title>Document</title>
66
<meta name="description" content="Description">
77
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
8-
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@rc/dist/themes/core.min.css">
9-
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@rc/dist/themes/addons/vue.min.css">
8+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@__docsifyVersion__/dist/themes/core.min.css">
9+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@__docsifyVersion__/dist/themes/addons/vue.min.css">
1010
</head>
1111
<body>
1212
<div id="app"></div>
@@ -16,8 +16,8 @@
1616
repo: ''
1717
}
1818
</script>
19-
<!-- Docsify rc -->
20-
<script src="//cdn.jsdelivr.net/npm/docsify@rc"></script>
19+
<!-- Docsify resource -->
20+
<script src="//cdn.jsdelivr.net/npm/docsify@__docsifyVersion__"></script>
2121
_plugins_
2222
</body>
2323
</html>

tools/locales/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"help": "Zeige Hilfe an",
55
"init": "Erzeuge neue Dokumentation.",
66
"init.local": "Kopiere docsify Dateien in lokale Ordner. Um explizit --local auf false zu setzen, kannst du --no-local verwenden.",
7+
"init.rc": "Probieren Sie die neueste Vorschauversion von docsify aus.",
78
"init.theme": "Zu verwendende Theme Dateien.",
89
"serve": "Lasse lokalen Server zur Webseitenvorschau laufen.",
910
"serve.open": "Dokumentation im Standardbrowser öffnen. Um explizit --open auf false zu setzen, kannst du --no-open verwenden.",

tools/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"help": "Show help",
55
"init": "Creates new docs",
66
"init.local": "Copy docsify files to local. To explicitly set --local to false you may use --no-local.",
7+
"init.rc": "Try docsify preview version, default is major version.",
78
"init.theme": "Theme file to be used.",
89
"init.plugins": "A list of plugins to be used.",
910
"serve": "Run local server to preview site.",

tools/locales/zh.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"help": "帮助",
55
"init": "创建 docs",
66
"init.local": "拷贝 docsify 到本地",
7+
"init.rc": "体验 docsify 预览版本,默认使用最新正式版本",
78
"init.theme": "选择主题",
89
"init.plugins": "选择插件",
910
"serve": "本地预览",

0 commit comments

Comments
 (0)