Merge branch 'master' into move-rspack-into-main
This commit is contained in:
commit
bb3837d871
@ -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. We’re thrilled to share some of this year's speakers, including folks from Aspect Build Systems, Trunk.io, Aviator Technologies, and Postman. Without further ado, let’s meet your speakers!
|
||||
|
||||
## Python Monorepos with Bazel
|
||||
|
||||
[Alex Eagle](https://x.com/Jakeherringbone), Aspect Build Systems
|
||||
|
||||
Bazel is Google’s open source incremental build tool made for extreme scalability and support for many languages. Let’s 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 you’re excited to see these amazing sessions! We’ll have more to share soon about what other speakers you can expect to see at Monorepo world! Don’t forget to register and get your ticket before it’s too late 😱!
|
||||
|
||||
[Get your tickets today!](https://bit.ly/3YZcb5r)
|
||||
BIN
docs/blog/images/2024-09-16/mw-blog-post.avif
Normal file
BIN
docs/blog/images/2024-09-16/mw-blog-post.avif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
@ -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
|
||||
|
||||
32
package.json
32
package.json
@ -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",
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
2204
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user