synopkg
Version:
Consistent dependency versions in large JavaScript Monorepos
265 lines (255 loc) • 10.5 kB
JavaScript
import starlight from '@astrojs/starlight';
import { defineConfig } from 'astro/config';
import { visit } from 'unist-util-visit';
export default defineConfig({
site: 'https://synopkg.github.io/synopkg',
base: '/synopkg',
redirects: {
// Hoisted docs
'/config/semver-groups/ignored/': '/synopkg/semver-groups/ignored/',
'/config/semver-groups/with-range/': '/synopkg/semver-groups/with-range/',
'/config/version-groups/banned/': '/synopkg/version-groups/banned/',
'/config/version-groups/ignored/': '/synopkg/version-groups/ignored/',
'/config/version-groups/lowest-version/': '/synopkg/version-groups/lowest-semver/',
'/config/version-groups/pinned/': '/synopkg/version-groups/pinned/',
'/config/version-groups/same-range/': '/synopkg/version-groups/same-range/',
'/config/version-groups/snapped-to/': '/synopkg/version-groups/snapped-to/',
'/config/version-groups/standard/': '/synopkg/version-groups/highest-semver/',
'/guide/status-codes/': '/synopkg/status/',
'/guide/getting-started/': '/synopkg/',
// Moved docs
'/guide/semver-groups/': '/semver-groups/',
'/guide/version-groups/': '/version-groups/',
// Removed docs
'/integrations/github-actions': '/synopkg/',
'/integrations/intellisense': '/synopkg/',
'/integrations/json-schema': '/synopkg/',
'/integrations/lerna': '/synopkg/',
'/integrations/npm': '/synopkg/',
'/integrations/pnpm': '/synopkg/',
'/integrations/yarn': '/synopkg/',
// Merged docs
'/guide/local-package-versions/': '/synopkg/dependency-types',
// Deprecated Feature: Removed
// @TODO: change to /synopkg/guide/upgrading/ once written
'/config/dependency-types/': '/synopkg/',
'/config/lint-formatting/': '/synopkg/',
'/config/lint-semver-ranges/': '/synopkg/',
'/config/lint-versions/': '/synopkg/',
'/config/specifier-types/': '/synopkg/',
// Deprecated Feature: Moved
'/command/fix-mismatches/': '/command/fix',
'/command/set-semver-ranges/': '/command/fix',
'/command/lint-semver-ranges/': '/command/lint',
'/command/list-mismatches/': '/command/lint',
},
markdown: {
smartypants: false,
remarkPlugins: [
function globalReferenceLinks() {
const linksById = {
COMMAND_FIX: '/synopkg/command/fix/',
COMMAND_FORMAT: '/synopkg/command/format/',
COMMAND_JSON: '/synopkg/command/json/',
COMMAND_LINT: '/synopkg/command/lint/',
COMMAND_LIST: '/synopkg/command/list/',
COMMAND_UPDATE: '/synopkg/command/update/',
CONFIG_CUSTOM_TYPES: '/synopkg/config/custom-types/',
CONFIG_DEPENDENCY_GROUPS: '/synopkg/config/dependency-groups/',
CONFIG_FORMAT_BUGS: '/synopkg/config/format-bugs/',
CONFIG_FORMAT_REPOSITORY: '/synopkg/config/format-repository/',
CONFIG_INDENT: '/synopkg/config/indent/',
CONFIG_SEMVER_GROUPS: '/synopkg/semver-groups/',
CONFIG_SORT_AZ: '/synopkg/config/sort-az/',
CONFIG_SORT_EXPORTS: '/synopkg/config/sort-exports/',
CONFIG_SORT_FIRST: '/synopkg/config/sort-first/',
CONFIG_SORT_PACKAGES: '/synopkg/config/sort-packages/',
CONFIG_SOURCE: '/synopkg/config/source/',
CONFIG_SYNOPKGRC: '/synopkg/config/synopkgrc/',
CONFIG_VERSION_GROUPS: '/synopkg/version-groups/',
GUIDE_PEER_DEPENDENCIES: '/synopkg/guide/peer-dependencies/',
REF_DEPENDENCY_TYPES: '/synopkg/dependency-types/',
REF_GLOSSARY: '/synopkg/glossary/',
REF_SPECIFIER_TYPES: '/synopkg/specifier-types/',
REF_STATUS_CODES: '/synopkg/status/',
TERM_CUSTOM_TYPE: '/synopkg/glossary/#custom-type',
TERM_DEPENDENCY: '/synopkg/glossary/#dependency',
TERM_DEPENDENCY_GROUP: '/synopkg/glossary/#dependency-group',
TERM_DEPENDENCY_TYPE: '/synopkg/glossary/#dependency-type',
TERM_INSTANCE: '/synopkg/glossary/#instance',
TERM_PACKAGE: '/synopkg/glossary/#package',
TERM_RCFILE: '/synopkg/glossary/#rcfile',
TERM_SEMVER: '/synopkg/glossary/#semver',
TERM_SEMVER_GROUP: '/synopkg/glossary/#semver-group',
TERM_SEMVER_RANGE: '/synopkg/glossary/#semver-range',
TERM_SPECIFIER: '/synopkg/glossary/#specifier',
TERM_SPECIFIER_TYPE: '/synopkg/glossary/#specifier-type',
TERM_STATUS_CODE: '/synopkg/glossary/#status-code',
TERM_VERSION_GROUP: '/synopkg/glossary/#version-group',
TERM_WORKSPACE: '/synopkg/glossary/#workspace',
HREF_ANSI: 'https://en.wikipedia.org/wiki/ANSI_escape_code',
HREF_AWS_SDK: 'https://aws.amazon.com/sdk-for-javascript/',
HREF_CATEGORIZE_YOUR_DEPENDENCIES: 'https://antfu.me/posts/categorize-deps',
HREF_CONDITIONAL_EXPORTS: 'https://nodejs.org/api/packages.html#conditional-exports',
HREF_COSMICONFIG: 'https://github.com/cosmiconfig/cosmiconfig',
HREF_DEPENDENCIES: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#dependencies',
HREF_DEV_DEPENDENCIES: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#devDependencies',
HREF_ENGINES: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#engines',
HREF_GLOB: 'https://github.com/rust-lang/glob',
HREF_LERNA: 'https://lerna.js.org/',
HREF_NEW_ISSUE: 'https://github.com/Synopkg/synopkg-github-action/issues/new',
HREF_NPM_EXEC: 'https://docs.npmjs.com/cli/v11/commands/npm-exec',
HREF_NPM_WORKSPACES: 'https://docs.npmjs.com/cli/v11/using-npm/workspaces',
HREF_NPX: 'https://docs.npmjs.com/cli/v11/commands/npx',
HREF_OVERRIDES: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#overrides',
HREF_PACKAGE_MANAGER: 'https://nodejs.org/api/packages.html#packagemanager',
HREF_PEER_DEPENDENCIES: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#peerDependencies',
HREF_PNPM: 'https://pnpm.js.org/',
HREF_PNPM_OVERRIDES: 'https://pnpm.io/package_json#pnpmoverrides',
HREF_RESOLUTIONS: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#resolutions',
HREF_SYNOPKG_GITHUB_ACTION:
'https://github.com/marketplace/actions/synopkg-synchronise-monorepo-dependency-versions',
HREF_TYPES: 'https://github.com/DefinitelyTyped/DefinitelyTyped',
HREF_VERSION: 'https://docs.npmjs.com/cli/v11/configuring-npm/package-json#version',
HREF_WORKSPACE_PROTOCOL: 'https://pnpm.io/workspaces#workspace-protocol-workspace',
HREF_YARN_WORKSPACES: 'https://yarnpkg.com/lang/en/docs/workspaces/',
SEMVER_GROUP_IGNORED: '/synopkg/semver-groups/ignored/',
SEMVER_GROUP_WITH_RANGE: '/synopkg/semver-groups/with-range/',
VERSION_GROUP_BANNED: '/synopkg/version-groups/banned/',
VERSION_GROUP_HIGHEST_SEMVER: '/synopkg/version-groups/highest-semver/',
VERSION_GROUP_IGNORED: '/synopkg/version-groups/ignored/',
VERSION_GROUP_LOWEST_SEMVER: '/synopkg/version-groups/lowest-semver/',
VERSION_GROUP_PINNED: '/synopkg/version-groups/pinned/',
VERSION_GROUP_SAME_RANGE: '/synopkg/version-groups/same-range/',
VERSION_GROUP_SNAPPED_TO: '/synopkg/version-groups/snapped-to/',
};
return function transformer(tree) {
visit(tree, 'link', node => {
if (linksById[node.url]) {
node.url = linksById[node.url];
}
});
return tree;
};
},
],
},
integrations: [
starlight({
title: 'Synopkg',
routeMiddleware: './src/route-data.ts',
social: [
{
icon: 'github',
label: 'GitHub',
href: 'https://github.com/Synopkg/synopkg',
},
{
icon: 'blueSky',
label: 'Bluesky',
href: 'https://bsky.app/profile/foldleft.bsky.social',
},
{
icon: 'x.com',
label: 'X',
href: 'https://x.com/fold_left',
},
],
editLink: {
baseUrl: 'https://github.com/Synopkg/synopkg/edit/main/site/',
},
favicon: '/favicon.ico',
logo: {
src: './src/assets/logo.svg',
},
expressiveCode: {
themes: ['github-light-default', 'github-dark-default'],
removeUnusedThemes: false,
},
customCss: ['./src/styles/custom.css'],
pagination: false,
sidebar: [
{
label: 'Github',
link: 'https://github.com/Synopkg/synopkg',
},
{
label: 'Guides',
autogenerate: { directory: 'guide' },
},
{
label: 'Commands',
autogenerate: { directory: 'command' },
},
{
label: 'Version Groups',
autogenerate: { directory: 'version-groups' },
},
{
label: 'Semver Groups',
autogenerate: { directory: 'semver-groups' },
},
{
label: 'Configuration File',
autogenerate: { directory: 'config' },
},
{
label: 'Reference',
autogenerate: { directory: 'reference' },
},
],
head: [
{
tag: 'meta',
attrs: {
name: 'twitter:image',
content: '/synopkg/social-card.jpg',
},
},
{
tag: 'meta',
attrs: {
property: 'og:image',
content: '/synopkg/social-card.jpg',
},
},
{
tag: 'meta',
attrs: {
property: 'og:image:width',
content: '1200',
},
},
{
tag: 'meta',
attrs: {
property: 'og:image:height',
content: '675',
},
},
{
tag: 'meta',
attrs: {
name: 'twitter:creator',
content: '@fold_left',
},
},
{
tag: 'meta',
attrs: {
name: 'twitter:site',
content: '@fold_left',
},
},
{
tag: 'script',
attrs: {
src: 'https://app.rybbit.io/api/script.js',
'data-site-id': '619',
defer: true,
},
},
],
}),
],
});