mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-21 12:08:03 +02:00
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
type Env = 'production' | 'development';
|
|
|
|
/**
|
|
* To easily work on draft/unlisted in dev mode, use this env variable!
|
|
* SIMULATE_PRODUCTION_VISIBILITY=true yarn start:website
|
|
*/
|
|
const simulateProductionVisibility =
|
|
process.env.SIMULATE_PRODUCTION_VISIBILITY === 'true';
|
|
|
|
/**
|
|
* draft/unlisted is a production-only concept
|
|
* In dev it is ignored and all content files are included
|
|
*/
|
|
function isProduction(env: Env | undefined): boolean {
|
|
return (
|
|
simulateProductionVisibility ||
|
|
(env ?? process.env.NODE_ENV) === 'production'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* A draft content will not be included in the production build
|
|
*/
|
|
export function isDraft({
|
|
frontMatter,
|
|
env,
|
|
}: {
|
|
frontMatter: {draft?: boolean};
|
|
env?: Env;
|
|
}): boolean {
|
|
return (isProduction(env) && frontMatter.draft) ?? false;
|
|
}
|
|
|
|
/**
|
|
* An unlisted content will be included in the production build, but hidden.
|
|
* It is excluded from sitemap, has noIndex, does not appear in lists etc...
|
|
* Only users having the link can find it.
|
|
*/
|
|
export function isUnlisted({
|
|
frontMatter,
|
|
env,
|
|
}: {
|
|
frontMatter: {unlisted?: boolean};
|
|
env?: Env;
|
|
}): boolean {
|
|
return (isProduction(env) && frontMatter.unlisted) ?? false;
|
|
}
|