mirror of
https://github.com/storybookjs/storybook.git
synced 2025-03-28 05:10:17 +08:00
Add release notes history tracking, config via CLI
This commit is contained in:
parent
d2c28f6686
commit
94a5e90f32
@ -124,6 +124,20 @@ const updateCheck = async (version) => {
|
||||
return result;
|
||||
};
|
||||
|
||||
const getReleaseNotesHistory = async (version) => {
|
||||
let result;
|
||||
try {
|
||||
const fromCache = await cache.get('releaseNotesHistory', []);
|
||||
if (!fromCache.includes(version)) {
|
||||
await cache.set('releaseNotesHistory', [...fromCache, version]);
|
||||
}
|
||||
result = { success: true, current: version, history: fromCache };
|
||||
} catch (error) {
|
||||
result = { success: false };
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
function listenToServer(server, listenAddr) {
|
||||
let serverResolve = () => {};
|
||||
let serverReject = () => {};
|
||||
@ -253,18 +267,21 @@ function openInBrowser(address) {
|
||||
|
||||
export async function buildDevStandalone(options) {
|
||||
try {
|
||||
const { host, extendServer, packageJson, versionUpdates } = options;
|
||||
const { host, extendServer, packageJson, versionUpdates, releaseNotes } = options;
|
||||
const { version } = packageJson;
|
||||
|
||||
const [port, check] = await Promise.all([
|
||||
const [port, versionCheck, releaseNotesHistory] = await Promise.all([
|
||||
getFreePort(options.port),
|
||||
versionUpdates
|
||||
? updateCheck(version)
|
||||
: Promise.resolve({ success: false, data: {}, time: Date.now() }),
|
||||
releaseNotes ? getReleaseNotesHistory(version) : Promise.resolve({ success: false }),
|
||||
]);
|
||||
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
options.versionCheck = check;
|
||||
/* eslint-disable no-param-reassign */
|
||||
options.versionCheck = versionCheck;
|
||||
options.releaseNotesHistory = releaseNotesHistory;
|
||||
/* eslint-enable no-param-reassign */
|
||||
|
||||
if (!options.ci && !options.smokeTest && options.port != null && port !== options.port) {
|
||||
const { shouldChangePort } = await inquirer.prompt({
|
||||
@ -313,7 +330,7 @@ export async function buildDevStandalone(options) {
|
||||
|
||||
const serverListening = listenToServer(server, listenAddr);
|
||||
|
||||
const [updateInfo] = await Promise.all([Promise.resolve(check), serverListening]);
|
||||
const [updateInfo] = await Promise.all([Promise.resolve(versionCheck), serverListening]);
|
||||
|
||||
const proto = options.https ? 'https' : 'http';
|
||||
const address = `${proto}://${options.host || 'localhost'}:${port}/`;
|
||||
|
@ -28,6 +28,7 @@ async function getCLI(packageJson) {
|
||||
.option('--loglevel [level]', 'Control level of logging during build')
|
||||
.option('--quiet', 'Suppress verbose build output')
|
||||
.option('--no-version-updates', 'Suppress update check', true)
|
||||
.option('--no-release-notes', 'Suppress release notes', true)
|
||||
.option('--no-dll', 'Do not use dll reference')
|
||||
.option('--debug-webpack', 'Display final webpack configurations for debugging purposes')
|
||||
.option(
|
||||
|
@ -36,6 +36,7 @@ export default async ({
|
||||
cache,
|
||||
previewUrl,
|
||||
versionCheck,
|
||||
releaseNotesHistory,
|
||||
presets,
|
||||
}) => {
|
||||
const { raw, stringified } = loadEnv();
|
||||
@ -86,6 +87,7 @@ export default async ({
|
||||
globals: {
|
||||
LOGLEVEL: logLevel,
|
||||
VERSIONCHECK: JSON.stringify(versionCheck),
|
||||
RELEASE_NOTES_HISTORY: JSON.stringify(releaseNotesHistory),
|
||||
DOCS_MODE: docsMode, // global docs mode
|
||||
PREVIEW_URL: previewUrl, // global preview URL
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user