@docusaurus/utils
Version:
Node utility functions for Docusaurus packages.
55 lines (49 loc) • 1.38 kB
text/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;
}