Merge branch 'master' into move-rspack-into-main

This commit is contained in:
Colum Ferry 2024-09-18 17:30:44 +01:00
commit bb3837d871
8 changed files with 1069 additions and 1289 deletions

View File

@ -0,0 +1,43 @@
---
title: Announcing your Monorepo World Speakers Part 2
slug: announcing-your-monorepo-world-speakers-pt-2
authors: ['Mike Hartington']
tags: [monorepo-world]
cover_image: /blog/images/2024-09-16/mw-blog-post.avif
---
[Monorepo World](https://monorepo.world) is our two-track conference bringing together experts in developer tooling and of course, monorepos. Were thrilled to share some of this year's speakers, including folks from Aspect Build Systems, Trunk.io, Aviator Technologies, and Postman. Without further ado, lets meet your speakers!
## Python Monorepos with Bazel
[Alex Eagle](https://x.com/Jakeherringbone), Aspect Build Systems
Bazel is Googles open source incremental build tool made for extreme scalability and support for many languages. Lets look at how Bazel can provide features like CI/CD, building and testing, as well as formatting/linting in a Python environment.
## Merge Queues at Scale
[Joshua Marinacci](https://x.com/joshmarinacci), Trunk
Merge queues are quickly becoming a requirement for high-traffic repos, especially monorepos, - coordinating and merging many PRs from many people while avoiding breaking main can become quite a manual and involved task. This talk will explain what a merge queue is, their features, and how smart merge queues can take advantage of Monorepos with build graphs to scale as the repo grows.
## Scaling Ownership to Improve Developer Experience
[Ankit Jain](https://x.com/ankitxg), Aviator Technologies
Ownership of code and services can become complex and unwieldy, especially as engineering teams scale and codebase complexity grows. This talk will explore practical strategies to streamline ownership management, addressing the intricacies of reorgs, shifting priorities, and codebase complexities.
## Poly Monorepos, the Best of the Two Worlds
[Jonathan Gelin](https://x.com/jonathan_gelin), Nx Champion
We often pit Polyrepos against Monorepos, but why not merge the best of both worlds? In this session, let's look at effective management of distributed monorepos from both decentralized and centralized perspectives.
## How to Prevent a Wrong Version Breaking Your Micro Frontends
[Patrick Sevat](https://x.com/_Sevat), Postman
“Oops, it turns out my PR was actually a breaking change. I'm so sorry I broke production for all apps except ours”. This developer nightmare was the worst case scenario the team at Postman has solved. This talk will focus on how shared dependencies can keep federated apps small in bundle size, but come at the risk of breaking other apps when semantic versioning (SemVer) is not adhered to.
We hope youre excited to see these amazing sessions! Well have more to share soon about what other speakers you can expect to see at Monorepo world! Dont forget to register and get your ticket before its too late 😱!
[Get your tickets today!](https://bit.ly/3YZcb5r)

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,7 +1,7 @@
'use client';
import { ButtonLink, SectionHeading, Strong } from '@nx/nx-dev/ui-common';
import { ShaderGradient, ShaderGradientCanvas } from 'shadergradient';
import { BlurFade } from '@nx/nx-dev/ui-animations';
import { BlurFade, usePrefersReducedMotion } from '@nx/nx-dev/ui-animations';
import { Theme, useTheme } from '@nx/nx-dev/ui-theme';
import { useState } from 'react';
import Link from 'next/link';
@ -141,6 +141,8 @@ export function Hero(): JSX.Element {
function ShaderGradientElement() {
const [theme] = useTheme();
const [displayTheme, setDisplayTheme] = useState<Theme>('system');
const prefersReducedMotion = usePrefersReducedMotion();
useIsomorphicLayoutEffect(() => {
const matchMedia: any = window.matchMedia('(prefers-color-scheme: dark)');
@ -170,6 +172,10 @@ function ShaderGradientElement() {
};
}, [theme]);
if (prefersReducedMotion) {
return;
}
if (displayTheme === 'dark')
return (
<BlurFade

View File

@ -68,21 +68,21 @@
"@ngrx/store": "18.0.2",
"@nuxt/kit": "^3.10.0",
"@nuxt/schema": "^3.10.0",
"@nx/angular": "19.7.0-beta.6",
"@nx/cypress": "19.7.0-beta.6",
"@nx/devkit": "19.7.0-beta.6",
"@nx/esbuild": "19.7.0-beta.6",
"@nx/eslint": "19.7.0-beta.6",
"@nx/eslint-plugin": "19.7.0-beta.6",
"@nx/jest": "19.7.0-beta.6",
"@nx/js": "19.7.0-beta.6",
"@nx/next": "19.7.0-beta.6",
"@nx/playwright": "19.7.0-beta.6",
"@nx/react": "19.7.0-beta.6",
"@nx/storybook": "19.7.0-beta.6",
"@nx/vite": "19.7.0-beta.6",
"@nx/web": "19.7.0-beta.6",
"@nx/webpack": "19.7.0-beta.6",
"@nx/angular": "19.8.0-beta.0",
"@nx/cypress": "19.8.0-beta.0",
"@nx/devkit": "19.8.0-beta.0",
"@nx/esbuild": "19.8.0-beta.0",
"@nx/eslint": "19.8.0-beta.0",
"@nx/eslint-plugin": "19.8.0-beta.0",
"@nx/jest": "19.8.0-beta.0",
"@nx/js": "19.8.0-beta.0",
"@nx/next": "19.8.0-beta.0",
"@nx/playwright": "19.8.0-beta.0",
"@nx/react": "19.8.0-beta.0",
"@nx/storybook": "19.8.0-beta.0",
"@nx/vite": "19.8.0-beta.0",
"@nx/web": "19.8.0-beta.0",
"@nx/webpack": "19.8.0-beta.0",
"@phenomnomnominal/tsquery": "~5.0.1",
"@playwright/test": "^1.36.1",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
@ -244,7 +244,7 @@
"node-fetch": "^2.6.7",
"npm-package-arg": "11.0.1",
"nuxt": "^3.10.0",
"nx": "19.7.0-beta.6",
"nx": "19.8.0-beta.0",
"octokit": "^2.0.14",
"open": "^8.4.0",
"openai": "~4.3.1",

View File

@ -12,7 +12,6 @@ import { fileExists, readJsonFile, writeJsonFile } from '../../utils/fileutils';
import { getIgnoreObject } from '../../utils/ignore';
import type { SupportInfo } from 'prettier';
import * as prettier from 'prettier';
import { readNxJson } from '../../config/configuration';
import { ProjectGraph } from '../../config/project-graph';
import {
@ -28,12 +27,22 @@ import { output } from '../../utils/output';
import { readModulePackageJson } from '../../utils/package-json';
import { workspaceRoot } from '../../utils/workspace-root';
const PRETTIER_PATH = getPrettierPath();
export async function format(
command: 'check' | 'write',
args: yargs.Arguments
): Promise<void> {
try {
require('prettier');
} catch {
output.error({
title: 'Prettier is not installed.',
bodyLines: [
`Please install "prettier" and try again, or don't run the "nx format:${command}" command.`,
],
});
process.exit(1);
}
const { nxArgs } = splitArgsIntoNxArgsAndOverrides(
args,
'affected',
@ -103,7 +112,9 @@ async function getPatterns(
// In prettier v3 the getSupportInfo result is a promise
const supportedExtensions = new Set(
(
await (prettier.getSupportInfo() as Promise<SupportInfo> | SupportInfo)
await (require('prettier').getSupportInfo() as
| Promise<SupportInfo>
| SupportInfo)
).languages
.flatMap((language) => language.extensions)
.filter((extension) => !!extension)
@ -192,9 +203,10 @@ function write(patterns: string[]) {
},
[[], []] as [swcrcPatterns: string[], regularPatterns: string[]]
);
const prettierPath = getPrettierPath();
execSync(
`node "${PRETTIER_PATH}" --write --list-different ${regularPatterns.join(
`node "${prettierPath}" --write --list-different ${regularPatterns.join(
' '
)}`,
{
@ -204,7 +216,7 @@ function write(patterns: string[]) {
if (swcrcPatterns.length > 0) {
execSync(
`node "${PRETTIER_PATH}" --write --list-different ${swcrcPatterns.join(
`node "${prettierPath}" --write --list-different ${swcrcPatterns.join(
' '
)} --parser json`,
{
@ -219,9 +231,12 @@ async function check(patterns: string[]): Promise<string[]> {
if (patterns.length === 0) {
return [];
}
const prettierPath = getPrettierPath();
return new Promise((resolve) => {
exec(
`node "${PRETTIER_PATH}" --list-different ${patterns.join(' ')}`,
`node "${prettierPath}" --list-different ${patterns.join(' ')}`,
{ encoding: 'utf-8' },
(error, stdout) => {
if (error) {
@ -248,7 +263,14 @@ function sortTsConfig() {
}
}
let prettierPath: string;
function getPrettierPath() {
if (prettierPath) {
return prettierPath;
}
const { bin } = readModulePackageJson('prettier').packageJson;
return require.resolve(path.join('prettier', bin as string));
prettierPath = require.resolve(path.join('prettier', bin as string));
return prettierPath;
}

View File

@ -81,7 +81,8 @@ pipelines:
- npm ci --legacy-peer-deps
- npx nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# npx nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- npx nx affected --base=origin/main -t lint test build
- npx nx affected --base=origin/main --parallel 1 -t e2e-ci
@ -312,7 +313,8 @@ pipelines:
- bun install --no-cache
- bun nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# bun nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- bun nx affected --base=origin/main -t lint test build
@ -569,7 +571,8 @@ pipelines:
- npm ci --legacy-peer-deps
- npx nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# npx nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- npx nx affected --base=origin/main -t lint test build
@ -827,7 +830,8 @@ pipelines:
- pnpm install --frozen-lockfile
- pnpm exec nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# pnpm exec nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- pnpm exec nx affected --base=origin/main -t lint test build
@ -1096,7 +1100,8 @@ pipelines:
- yarn install --frozen-lockfile
- yarn nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# yarn nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- yarn nx affected --base=origin/main -t lint test build
@ -1351,7 +1356,8 @@ pipelines:
- npm ci --legacy-peer-deps
- npx nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# npx nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- npx nx affected --base=origin/main -t lint test build
- npx nx affected --base=origin/main --parallel 1 -t e2e-ci
@ -1588,7 +1594,8 @@ pipelines:
- bun install --no-cache
- bun nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# bun nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- bun nx affected --base=origin/main -t lint test build
@ -1852,7 +1859,8 @@ pipelines:
- npm ci --legacy-peer-deps
- npx nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# npx nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- npx nx affected --base=origin/main -t lint test build
@ -2117,7 +2125,8 @@ pipelines:
- pnpm install --frozen-lockfile
- pnpm exec nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# pnpm exec nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- pnpm exec nx affected --base=origin/main -t lint test build
@ -2393,7 +2402,8 @@ pipelines:
- yarn install --frozen-lockfile
- yarn nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# yarn nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- yarn nx affected --base=origin/main -t lint test build

View File

@ -28,7 +28,8 @@ pipelines:
<% } %>
- <%= packageManagerInstall %>
- <%= packageManagerPrefix %> nx-cloud record -- nx format:check
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# <%= packageManagerPrefix %> nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- <%= packageManagerPrefix %> nx affected --base=origin/<%= mainBranch %> -t lint test build<% if(hasE2E){ %>
- <%= packageManagerPrefix %> nx affected --base=origin/<%= mainBranch %> --parallel 1 -t e2e-ci<% } %>

2204
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff