1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/website/docusaurus.config.js
2023-10-10 20:18:12 +02:00

456 lines
13 KiB
JavaScript

// @ts-check
const translations = require('@verdaccio/crowdin-translations/build/progress_lang.json');
const lgnMapping = {
'de-DE': 'de',
'pl-PL': 'pl',
'cs-CZ': 'cs',
'fr-FR': 'fr',
'it-IT': 'it',
'ru-RU': 'ru',
'vi-VN': 'vi',
'yo-NG': 'yo',
};
// @ts-ignore
const progress = translations;
const limitLngIncluded = 40;
console.log('limit translation is on %s%', limitLngIncluded);
const isDeployPreview = process.env.CONTEXT === 'deploy-preview';
const isProductionDeployment = process.env.CONTEXT === 'production';
const filterByProgress = (items) => {
const originLng = Object.keys(translations);
return items.filter((lgn) => {
if (lgn === 'en') {
return true;
}
const _lgn = lgnMapping[lgn] ? lgnMapping[lgn] : lgn;
if (!originLng.includes(_lgn)) {
console.log(`language ${_lgn} excluded, does not exist in origin`);
return false;
}
if (translations[_lgn].approvalProgress <= limitLngIncluded) {
console.log(
'language %s is being excluded due does not met limit of translation, current: %s%',
_lgn,
translations[_lgn].approvalProgress
);
return false;
}
return true;
});
};
const i18nConfig = {
defaultLocale: 'en',
locales: isDeployPreview
? ['en']
: filterByProgress([
'en',
'cs-CZ',
'de-DE',
'es-ES',
'fr-FR',
'it-IT',
'pl-PL',
'pt-BR',
'ru-RU',
'sr-CS',
'vi-VN',
'yo-NG',
'zh-TW',
'zh-CN',
]),
localeConfigs: {
en: { label: 'English' },
'it-IT': { label: `Italiano (${progress['it'].translationProgress}%)` },
'es-ES': { label: `Español (${progress['es-ES'].translationProgress}%)` },
'de-DE': { label: `Deutsch (${progress['de'].translationProgress}%)` },
'cs-CZ': { label: `Čeština (Česko) (${progress['cs'].translationProgress}%)` },
'fr-FR': { label: `Français (${progress['fr'].translationProgress}%)` },
'pl-PL': { label: `Polski (Polska) (${progress['pl'].translationProgress}%)` },
'pt-BR': { label: `Português (Brasil) (${progress['pt-BR'].translationProgress}%)` },
'ru-RU': { label: `Русский (Россия) (${progress['ru'].translationProgress}%)` },
'zh-CN': { label: `中文(中国)(${progress['zh-CN'].translationProgress}%)` },
'zh-TW': { label: `中文(台灣)(${progress['zh-TW'].translationProgress}%)` },
'yo-NG': { label: `Èdè Yorùbá (Nàìjíríà) (${progress['yo'].translationProgress}%)` },
'sr-CS': { label: `Српски (Србија) (${progress['sr-CS'].translationProgress}%)` },
'vi-VN': { label: `Tiếng Việt (Việt Nam) (${progress['vi'].translationProgress}%)` },
},
};
module.exports = {
title: 'Verdaccio',
tagline: 'A lightweight Node.js private proxy registry',
organizationName: 'verdaccio',
projectName: 'verdaccio',
url: 'https://verdaccio.org',
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/logo/uk/verdaccio-tiny-uk-no-bg.svg',
i18n: i18nConfig,
scripts: ['https://buttons.github.io/buttons.js'],
plugins: [
'docusaurus-plugin-sass',
'docusaurus-plugin-contributors',
isProductionDeployment &&
typeof process.env.SENTRY_KEY === 'string' && [
'docusaurus-plugin-sentry',
{ DSN: process.env.SENTRY_KEY },
],
[
'docusaurus-plugin-typedoc',
{
entryPoints: ['../packages/node-api/src/index.ts'],
tsconfig: '../packages/node-api/tsconfig.build.json',
id: 'api/node-api',
out: 'api/node-api',
// theme: 'default',
excludePrivate: false,
excludeProtected: true,
categorizeByGroup: false,
excludeInternal: true,
sidebar: {
categoryLabel: '@verdaccio/node-api',
// position: 1,
fullNames: true,
},
},
],
[
'content-docs',
{
id: 'community',
path: 'community',
routeBasePath: 'community',
sidebarPath: require.resolve('./sidebarsCommunity.js'),
showLastUpdateTime: true,
},
],
[
'content-docs',
{
id: 'dev',
path: 'dev',
routeBasePath: 'dev',
sidebarPath: require.resolve('./sidebarsDev.js'),
showLastUpdateTime: true,
},
],
[
'content-docs',
{
id: 'talks',
path: 'talks',
routeBasePath: 'talks',
sidebarPath: require.resolve('./sidebarsTalk.js'),
showLastUpdateTime: true,
},
],
[
'docusaurus-plugin-typedoc',
{
entryPoints: ['../packages/config/src/index.ts'],
tsconfig: '../packages/config/tsconfig.build.json',
id: 'api/config',
out: 'api/config',
sidebar: {
categoryLabel: '@verdaccio/config',
fullNames: true,
},
},
],
[
'docusaurus-plugin-typedoc',
{
entryPoints: ['../packages/ui-components/src/index.ts'],
tsconfig: '../packages/ui-components/tsconfig.build.json',
id: 'api/ui-components',
out: 'api/ui-components',
sidebar: {
categoryLabel: '@verdaccio/ui-components',
fullNames: true,
watch: process.env.TYPEDOC_WATCH,
},
},
],
[
'docusaurus-plugin-typedoc',
{
entryPoints: ['../packages/core/core/src/index.ts'],
tsconfig: '../packages/core/core/tsconfig.build.json',
id: 'api/core',
out: 'api/core',
sidebar: {
categoryLabel: '@verdaccio/core',
fullNames: true,
},
},
],
[
'docusaurus-plugin-typedoc',
{
entryPoints: ['../packages/core/types/src/types.ts'],
tsconfig: '../packages/core/types/tsconfig.build.json',
id: 'api/types',
out: 'api/types',
categorizeByGroup: false,
includeVersion: true,
sidebar: {
categoryLabel: '@verdaccio/types',
fullNames: true,
},
},
],
],
markdown: {
mermaid: true,
},
themes: ['@docusaurus/theme-mermaid'],
webpack: {
jsLoader: (isServer) => ({
loader: require.resolve('esbuild-loader'),
options: {
loader: 'tsx',
format: isServer ? 'cjs' : undefined,
target: isServer ? 'node12' : 'es2017',
},
}),
},
customFields: {
description: 'A lightweight Node.js private proxy registry',
},
themeConfig: {
mermaid: {
theme: { light: 'neutral', dark: 'forest' },
},
announcementBar: {
id: 'announcementBar',
content:
'<a target="_blank" rel="noopener noreferrer" href="https://www.wfp.org/support-us/stories/ukraine-appeal">Help provide humanitarian support to Ukraine refugees</a>!',
isCloseable: false,
backgroundColor: '#1595de',
textColor: '#ffffff',
},
algolia: {
appId: 'B3TG5CBF5H',
apiKey: 'ed054733cb03418e9af25b7beb82c924',
indexName: 'verdaccio',
contextualSearch: true,
},
docs: {
sidebar: {
hideable: true,
autoCollapseCategories: true,
},
},
navbar: {
title: `Verdaccio - v5.x`,
logo: {
alt: 'Verdaccio Logo',
src: 'img/logo/uk/verdaccio-tiny-uk-no-bg.svg',
},
items: [
{
type: 'doc',
docId: 'what-is-verdaccio',
position: 'left',
label: 'Docs',
},
{
type: 'doc',
docId: 'api/node-api/index',
position: 'left',
label: 'API',
},
{ to: '/blog', label: 'Blog', position: 'left' },
{
type: 'docsVersionDropdown',
position: 'right',
},
{
href: 'https://opencollective.com/verdaccio',
label: 'Sponsor us',
position: 'right',
},
{
href: '/community',
label: 'Community',
position: 'left',
},
{
href: '/talks',
label: 'Video Talks',
position: 'left',
},
{
type: 'localeDropdown',
position: 'right',
dropdownItemsAfter: [
{
href: 'https://crowdin.com/project/verdaccio',
label: 'Help Us Translate',
},
],
},
{
href: 'https://github.com/verdaccio/verdaccio',
position: 'right',
className: 'header-github-link',
'aria-label': 'GitHub repository',
},
{
href: 'https://fosstodon.org/@verdaccio',
position: 'right',
className: 'header-mastodon-link',
'aria-label': 'Follow us at Fosstodon',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Getting Started',
to: '/docs/what-is-verdaccio',
},
{
label: 'Docker',
to: '/docs/docker',
},
{
label: 'Configuration',
to: '/docs/configuration',
},
{
label: 'Logos',
to: '/docs/logo',
},
],
},
{
title: 'Community',
items: [
{
label: 'Stack Overflow',
href: 'https://stackoverflow.com/questions/tagged/verdaccio',
},
{
label: 'Discord',
href: 'https://discord.gg/7qWJxBf',
},
{
html: `
<a href="https://fosstodon.org/@verdaccio" rel="me">
Mastodon
</a>
`,
},
],
},
{
title: 'More',
items: [
{
label: 'Blog',
to: '/blog',
},
{
label: 'GitHub',
href: 'https://github.com/verdaccio/verdaccio',
},
{
label: 'Mastodon',
href: 'https://fosstodon.org/@verdaccio',
},
{
html: `
<a href="https://www.netlify.com" target="_blank" rel="noreferrer noopener" aria-label="Deploys by Netlify">
<img src="https://www.netlify.com/img/global/badges/netlify-color-accent.svg" alt="Deploys by Netlify" />
</a>
`,
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Verdaccio community. Built with Docusaurus.`,
},
colorMode: {
defaultMode: 'light',
disableSwitch: false,
respectPrefersColorScheme: true,
},
prism: {
theme: require('prism-react-renderer/themes/github'),
darkTheme: require('prism-react-renderer/themes/nightOwl'),
},
},
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.js'),
showLastUpdateAuthor: true,
showLastUpdateTime: true,
sidebarCollapsible: true,
remarkPlugins: [[require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }]],
editUrl: ({ locale, docPath }) => {
if (locale !== 'en') {
return `https://crowdin.com/project/verdaccio/${locale}`;
}
return `https://github.com/verdaccio/verdaccio/edit/master/website/docs/${docPath}`;
},
lastVersion: '5.x',
onlyIncludeVersions: ['5.x', '6.x'],
versions: {
current: {
label: `5.x`,
},
'6.x': {
label: `6.x`,
banner: 'unreleased',
},
'5.x': {
label: `5.x`,
},
},
},
googleAnalytics: {
trackingID: 'G-PCYM9FYJZT',
},
gtag: {
trackingID: 'G-PCYM9FYJZT',
},
blog: {
blogTitle: 'Verdaccio Official Blog',
blogDescription: 'The official Verdaccio Node.js proxy registry blog',
showReadingTime: true,
postsPerPage: 3,
feedOptions: {
type: 'all',
},
blogSidebarCount: 'ALL',
blogSidebarTitle: 'All our posts',
editUrl: ({ locale, blogDirPath, blogPath }) => {
if (locale !== 'en') {
return `https://crowdin.com/project/verdaccio/${locale}`;
}
return `https://github.com/verdaccio/verdaccio/edit/master/website/${blogDirPath}/${blogPath}`;
},
},
theme: {
customCss: require.resolve('./src/css/custom.scss'),
},
},
],
],
};