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

394 lines
11 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 = 19;
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}%)` },
}
}
const pkgJson = require('./package.json')
/** @type {import('@docusaurus/types').DocusaurusConfig} */
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,
}),
],
[
'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/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
},
},
],
],
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: {
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 - v${pkgJson.version}`,
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',
},
{
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',
},
],
},
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',
},
{
label: 'Twitter',
href: 'https://twitter.com/verdaccio_npm',
},
],
},
{
title: 'More',
items: [
{
label: 'Blog',
to: '/blog',
},
{
label: 'GitHub',
href: 'https://github.com/verdaccio/verdaccio',
},
{
label: 'Twitter',
href: 'https://twitter.com/verdaccio_npm',
},
{
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',
versions: {
current: {
label: `6.x`,
},
'5.x': {
label: `5.x (Latest)`,
},
},
},
googleAnalytics: {
// trackingID: 'UA-2527438-21'
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'),
},
},
],
],
};