diff --git a/.yarn/versions/af44cf1e.yml b/.yarn/versions/af44cf1e.yml new file mode 100644 index 000000000000..99c2d8e32380 --- /dev/null +++ b/.yarn/versions/af44cf1e.yml @@ -0,0 +1,2 @@ +releases: + "@yarnpkg/sdks": minor diff --git a/packages/yarnpkg-sdks/sources/generateSdk.ts b/packages/yarnpkg-sdks/sources/generateSdk.ts index 47f878f363a4..cc971a321011 100644 --- a/packages/yarnpkg-sdks/sources/generateSdk.ts +++ b/packages/yarnpkg-sdks/sources/generateSdk.ts @@ -198,6 +198,7 @@ export type SupportedSdk = | `@astrojs/language-server` | `eslint` | `prettier` + | `@biomejs/biome` | `relay-compiler` | `typescript-language-server` | `typescript` diff --git a/packages/yarnpkg-sdks/sources/sdks/base.ts b/packages/yarnpkg-sdks/sources/sdks/base.ts index ddbb8855e4a7..f091a37e2ed6 100644 --- a/packages/yarnpkg-sdks/sources/sdks/base.ts +++ b/packages/yarnpkg-sdks/sources/sdks/base.ts @@ -27,6 +27,14 @@ export const generatePrettierBaseWrapper: GenerateBaseWrapper = async (pnpApi: P return wrapper; }; +export const generateBiomeBaseWrapper: GenerateBaseWrapper = async (pnpApi: PnpApi, target: PortablePath) => { + const wrapper = new Wrapper(`@biomejs/biome` as PortablePath, {pnpApi, target, manifestOverrides: {exports: undefined}}); + + await wrapper.writeDefaults(); + + return wrapper; +}; + export const generateRelayCompilerBaseWrapper: GenerateBaseWrapper = async (pnpApi: PnpApi, target: PortablePath) => { const wrapper = new Wrapper(`relay-compiler` as PortablePath, {pnpApi, target}); @@ -289,6 +297,7 @@ export const BASE_SDKS: BaseSdks = [ [`@astrojs/language-server`, generateAstroLanguageServerBaseWrapper], [`eslint`, generateEslintBaseWrapper], [`prettier`, generatePrettierBaseWrapper], + [`@biomejs/biome`, generateBiomeBaseWrapper], [`relay-compiler`, generateRelayCompilerBaseWrapper], [`typescript-language-server`, generateTypescriptLanguageServerBaseWrapper], [`typescript`, generateTypescriptBaseWrapper], diff --git a/packages/yarnpkg-sdks/sources/sdks/vscode.ts b/packages/yarnpkg-sdks/sources/sdks/vscode.ts index b47880c59fe9..a1ddba3c0a0b 100644 --- a/packages/yarnpkg-sdks/sources/sdks/vscode.ts +++ b/packages/yarnpkg-sdks/sources/sdks/vscode.ts @@ -77,6 +77,22 @@ export const generatePrettierWrapper: GenerateIntegrationWrapper = async (pnpApi }); }; +export const generateBiomeWrapper: GenerateIntegrationWrapper = async (pnpApi: PnpApi, target: PortablePath, wrapper: Wrapper) => { + await addVSCodeWorkspaceConfiguration(pnpApi, VSCodeConfiguration.settings, { + [`biome.lsp.bin`]: npath.fromPortablePath( + wrapper.getProjectPathTo( + `bin/biome` as PortablePath, + ), + ), + }); + + await addVSCodeWorkspaceConfiguration(pnpApi, VSCodeConfiguration.extensions, { + [`recommendations`]: [ + `biomejs.biome`, + ], + }); +}; + export const generateRelayCompilerWrapper: GenerateIntegrationWrapper = async (pnpApi: PnpApi, target: PortablePath, wrapper: Wrapper) => { await addVSCodeWorkspaceConfiguration(pnpApi, VSCodeConfiguration.settings, { [`relay.pathToRelay`]: npath.fromPortablePath( @@ -144,6 +160,7 @@ export const VSCODE_SDKS: IntegrationSdks = [ [`@astrojs/language-server`, generateAstroLanguageServerWrapper], [`eslint`, generateEslintWrapper], [`prettier`, generatePrettierWrapper], + [`@biomejs/biome`, generateBiomeWrapper], [`relay-compiler`, generateRelayCompilerWrapper], [`typescript-language-server`, null], [`typescript`, generateTypescriptWrapper],