From c2c7cc7ea13442ec9194c2e48e739e50fc905c64 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 2 Sep 2024 15:34:45 -0400 Subject: [PATCH] Support loading plugins in CSS (#1044) This adds support for `@plugin` and `@config` in v4 which is coming in v4.0.0-alpha.21 --- .../src/lib/env.ts | 2 +- .../src/project-locator.ts | 35 ++++---- .../src/projects.ts | 2 +- .../tailwindcss-language-server/src/tw.ts | 2 +- .../src/util/resolveFrom.ts | 2 +- .../src/util/v4/design-system.ts | 54 ++++++++++- .../tests/fixtures/v4/css-loading-js/app.css | 17 ++++ .../v4/css-loading-js/cjs/my-config.cjs | 9 ++ .../v4/css-loading-js/cjs/my-plugin.cjs | 16 ++++ .../v4/css-loading-js/esm/my-config.mjs | 9 ++ .../v4/css-loading-js/esm/my-plugin.mjs | 16 ++++ .../v4/css-loading-js/package-lock.json | 17 ++++ .../fixtures/v4/css-loading-js/package.json | 5 ++ .../v4/css-loading-js/tailwindcss.tgz | Bin 0 -> 96695 bytes .../v4/css-loading-js/ts/my-config.ts | 11 +++ .../v4/css-loading-js/ts/my-plugin.ts | 17 ++++ .../tests/hover/hover.test.js | 84 ++++++++++++++++++ .../tailwindcss-language-server/tsconfig.json | 2 +- .../src/features.ts | 4 +- packages/vscode-tailwindcss/CHANGELOG.md | 3 +- 20 files changed, 281 insertions(+), 26 deletions(-) create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/app.css create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-config.cjs create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-plugin.cjs create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-config.mjs create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-plugin.mjs create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package-lock.json create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package.json create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/tailwindcss.tgz create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/ts/my-config.ts create mode 100644 packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/ts/my-plugin.ts diff --git a/packages/tailwindcss-language-server/src/lib/env.ts b/packages/tailwindcss-language-server/src/lib/env.ts index 21942860..16df926a 100644 --- a/packages/tailwindcss-language-server/src/lib/env.ts +++ b/packages/tailwindcss-language-server/src/lib/env.ts @@ -1,6 +1,6 @@ import Module from 'node:module' import * as path from 'node:path' -import resolveFrom from '../util/resolveFrom' +import { resolveFrom } from '../util/resolveFrom' process.env.TAILWIND_MODE = 'build' process.env.TAILWIND_DISABLE_TOUCH = 'true' diff --git a/packages/tailwindcss-language-server/src/project-locator.ts b/packages/tailwindcss-language-server/src/project-locator.ts index 9e39f67d..e76033d3 100644 --- a/packages/tailwindcss-language-server/src/project-locator.ts +++ b/packages/tailwindcss-language-server/src/project-locator.ts @@ -11,7 +11,7 @@ import type { AtRule, Message } from 'postcss' import { type DocumentSelector, DocumentSelectorPriority } from './projects' import { CacheMap } from './cache-map' import { getPackageRoot } from './util/get-package-root' -import resolveFrom from './util/resolveFrom' +import { resolveFrom } from './util/resolveFrom' import { type Feature, supportedFeatures } from '@tailwindcss/language-service/src/features' import { extractSourceDirectives, resolveCssImports } from './css' import { normalizeDriveLetter, normalizePath, pathToFileURL } from './utils' @@ -132,15 +132,18 @@ export class ProjectLocator { console.log(JSON.stringify({ tailwind })) - // A JS/TS config file was loaded from an `@config`` directive in a CSS file + // A JS/TS config file was loaded from an `@config` directive in a CSS file + // This is only relevant for v3 projects so we'll do some feature detection + // to verify if this is supported in the current version of Tailwind. if (config.type === 'js' && config.source === 'css') { // We only allow local versions of Tailwind to use `@config` directives if (tailwind.isDefaultVersion) { return null } - // This version of Tailwind doesn't support `@config` directives - if (!tailwind.features.includes('css-at-config')) { + // This version of Tailwind doesn't support considering `@config` directives + // as a project on their own. + if (!tailwind.features.includes('css-at-config-as-project')) { return null } } @@ -310,8 +313,12 @@ export class ProjectLocator { // If the CSS file couldn't be read for some reason, skip it if (!file.content) continue + // Look for `@import`, `@tailwind`, `@theme`, `@config`, etc… + if (!file.isMaybeTailwindRelated()) continue + // Find `@config` directives in CSS files and resolve them to the actual - // config file that they point to. + // config file that they point to. This is only relevant for v3 which + // we'll verify after config resolution. let configPath = file.configPathInCss() if (configPath) { // We don't need the content for this file anymore @@ -327,14 +334,9 @@ export class ProjectLocator { content: [], })), ) - continue } - // Look for `@import` or `@tailwind` directives - if (file.isMaybeTailwindRelated()) { - imports.push(file) - continue - } + imports.push(file) } // Resolve imports in all the CSS files @@ -636,6 +638,9 @@ class FileEntry { * Look for `@config` directives in a CSS file and return the path to the config * file that it points to. This path is (possibly) relative to the CSS file so * it must be resolved to an absolute path before returning. + * + * This is only useful for v3 projects. While v4 can use `@config` directives + * the CSS file is still considered the "config" rather than the JS file. */ configPathInCss(): string | null { if (!this.content) return null @@ -649,21 +654,21 @@ class FileEntry { } /** - * Look for `@import` or `@tailwind` directives in a CSS file. This means that + * Look for tailwind-specific directives in a CSS file. This means that it * participates in the CSS "graph" for the project and we need to traverse * the graph to find all the CSS files that are considered entrypoints. */ isMaybeTailwindRelated(): boolean { if (!this.content) return false - let HAS_IMPORT = /@import\s*(?'[^']+'|"[^"]+");/ + let HAS_IMPORT = /@import\s*('[^']+'|"[^"]+");/ let HAS_TAILWIND = /@tailwind\s*[^;]+;/ - let HAS_THEME = /@theme\s*\{/ + let HAS_DIRECTIVE = /@(theme|plugin|config|utility|variant|apply)\s*[^;{]+[;{]/ return ( HAS_IMPORT.test(this.content) || HAS_TAILWIND.test(this.content) || - HAS_THEME.test(this.content) + HAS_DIRECTIVE.test(this.content) ) } } diff --git a/packages/tailwindcss-language-server/src/projects.ts b/packages/tailwindcss-language-server/src/projects.ts index 6704c871..09d4196a 100644 --- a/packages/tailwindcss-language-server/src/projects.ts +++ b/packages/tailwindcss-language-server/src/projects.ts @@ -24,7 +24,7 @@ import * as path from 'path' import * as fs from 'fs' import findUp from 'find-up' import picomatch from 'picomatch' -import resolveFrom, { setPnpApi } from './util/resolveFrom' +import { resolveFrom, setPnpApi } from './util/resolveFrom' import type { AtRule, Container, Node, Result } from 'postcss' import Hook from './lib/hook' import * as semver from '@tailwindcss/language-service/src/util/semver' diff --git a/packages/tailwindcss-language-server/src/tw.ts b/packages/tailwindcss-language-server/src/tw.ts index 08536ae5..f95e438a 100644 --- a/packages/tailwindcss-language-server/src/tw.ts +++ b/packages/tailwindcss-language-server/src/tw.ts @@ -36,7 +36,7 @@ import normalizePath from 'normalize-path' import * as path from 'path' import type * as chokidar from 'chokidar' import picomatch from 'picomatch' -import resolveFrom from './util/resolveFrom' +import { resolveFrom } from './util/resolveFrom' import * as parcel from './watcher/index.js' import { equal } from '@tailwindcss/language-service/src/util/array' import { CONFIG_GLOB, CSS_GLOB, PACKAGE_LOCK_GLOB } from './lib/constants' diff --git a/packages/tailwindcss-language-server/src/util/resolveFrom.ts b/packages/tailwindcss-language-server/src/util/resolveFrom.ts index 8fbc37fe..f81cccf7 100644 --- a/packages/tailwindcss-language-server/src/util/resolveFrom.ts +++ b/packages/tailwindcss-language-server/src/util/resolveFrom.ts @@ -16,7 +16,7 @@ export function setPnpApi(newPnpApi: any): void { resolver = recreateResolver() } -export default function resolveFrom(from?: string, id?: string): string { +export function resolveFrom(from?: string, id?: string): string { // Network share path on Windows if (id.startsWith('\\\\')) return id diff --git a/packages/tailwindcss-language-server/src/util/v4/design-system.ts b/packages/tailwindcss-language-server/src/util/v4/design-system.ts index 07cc3766..e4c5bd84 100644 --- a/packages/tailwindcss-language-server/src/util/v4/design-system.ts +++ b/packages/tailwindcss-language-server/src/util/v4/design-system.ts @@ -1,7 +1,10 @@ import type { DesignSystem } from '@tailwindcss/language-service/src/util/v4' import postcss from 'postcss' +import * as path from 'node:path' import { resolveCssImports } from '../../css' +import { resolveFrom } from '../resolveFrom' +import { pathToFileURL } from 'tailwindcss-language-server/src/utils' const HAS_V4_IMPORT = /@import\s*(?:'tailwindcss'|"tailwindcss")/ const HAS_V4_THEME = /@theme\s*\{/ @@ -18,6 +21,37 @@ export async function isMaybeV4(css: string): Promise { return HAS_V4_THEME.test(css) || HAS_V4_IMPORT.test(css) } +/** + * Create a loader function that can load plugins and config files relative to + * the CSS file that uses them. However, we don't want missing files to prevent + * everything from working so we'll let the error handler decide how to proceed. + * + * @param {object} param0 + * @returns + */ +function createLoader({ + filepath, + onError, +}: { + filepath: string + onError: (id: string, error: unknown) => T +}) { + let baseDir = path.dirname(filepath) + let cacheKey = `${+Date.now()}` + + return async function loadFile(id: string) { + try { + let resolved = resolveFrom(baseDir, id) + let url = pathToFileURL(resolved) + url.searchParams.append('t', cacheKey) + + return await import(url.href).then((m) => m.default ?? m) + } catch (err) { + return onError(id, err) + } + } +} + export async function loadDesignSystem( tailwindcss: any, filepath: string, @@ -38,9 +72,23 @@ export async function loadDesignSystem( // Step 3: Take the resolved CSS and pass it to v4's `loadDesignSystem` let design: DesignSystem = await tailwindcss.__unstable__loadDesignSystem(resolved.css, { - loadPlugin() { - return () => {} - }, + loadPlugin: createLoader({ + filepath, + onError(id, err) { + console.error(`Unable to load plugin: ${id}`, err) + + return () => {} + }, + }), + + loadConfig: createLoader({ + filepath, + onError(id, err) { + console.error(`Unable to load config: ${id}`, err) + + return {} + }, + }), }) // Step 4: Augment the design system with some additional APIs that the LSP needs diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/app.css b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/app.css new file mode 100644 index 00000000..dc86c622 --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/app.css @@ -0,0 +1,17 @@ +@import 'tailwindcss'; + +/* Load ESM versions */ +@config './esm/my-config.mjs'; +@plugin './esm/my-plugin.mjs'; + +/* Load Common JS versions */ +@config './cjs/my-config.cjs'; +@plugin './cjs/my-plugin.cjs'; + +/* Load TypeScript versions */ +@config './ts/my-config.ts'; +@plugin './ts/my-plugin.ts'; + +/* Attempt to load files that do not exist */ +@config './missing-confg.mjs'; +@plugin './missing-plugin.mjs'; diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-config.cjs b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-config.cjs new file mode 100644 index 00000000..9d2eec31 --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-config.cjs @@ -0,0 +1,9 @@ +module.exports = { + theme: { + extend: { + colors: { + 'cjs-from-config': 'black', + }, + }, + }, +} diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-plugin.cjs b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-plugin.cjs new file mode 100644 index 00000000..9b8634e8 --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/cjs/my-plugin.cjs @@ -0,0 +1,16 @@ +const plugin = require('tailwindcss/plugin') + +module.exports = plugin( + () => { + // + }, + { + theme: { + extend: { + colors: { + 'cjs-from-plugin': 'black', + }, + }, + }, + }, +) diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-config.mjs b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-config.mjs new file mode 100644 index 00000000..0862924f --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-config.mjs @@ -0,0 +1,9 @@ +export default { + theme: { + extend: { + colors: { + 'esm-from-config': 'black', + }, + }, + }, +} diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-plugin.mjs b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-plugin.mjs new file mode 100644 index 00000000..f08ad2ca --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/esm/my-plugin.mjs @@ -0,0 +1,16 @@ +import plugin from 'tailwindcss/plugin' + +export default plugin( + () => { + // + }, + { + theme: { + extend: { + colors: { + 'esm-from-plugin': 'black', + }, + }, + }, + }, +) diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package-lock.json b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package-lock.json new file mode 100644 index 00000000..63c4cb68 --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package-lock.json @@ -0,0 +1,17 @@ +{ + "name": "css-loading-js", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "tailwindcss": "file:tailwindcss.tgz" + } + }, + "node_modules/tailwindcss": { + "version": "4.0.0-alpha.20", + "resolved": "file:tailwindcss.tgz", + "integrity": "sha512-BlNEPI7xonARxqHaNmjWSwBonwu/d8UcVzznUZqekpCIJaWNVlPVqAlOHghSbXju3NHAmUKh6PrMa1ijUMdj+g==" + } + } +} diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package.json b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package.json new file mode 100644 index 00000000..444d4230 --- /dev/null +++ b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "tailwindcss": "file:tailwindcss.tgz" + } +} diff --git a/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/tailwindcss.tgz b/packages/tailwindcss-language-server/tests/fixtures/v4/css-loading-js/tailwindcss.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7544562f87cba7c03dadf9cdb874e79f4a8e8aa2 GIT binary patch literal 96695 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 { + // + }, + { + theme: { + extend: { + colors: { + 'ts-from-plugin': 'black', + }, + }, + }, + }, +) diff --git a/packages/tailwindcss-language-server/tests/hover/hover.test.js b/packages/tailwindcss-language-server/tests/hover/hover.test.js index 93c3c7a4..0b380cbe 100644 --- a/packages/tailwindcss-language-server/tests/hover/hover.test.js +++ b/packages/tailwindcss-language-server/tests/hover/hover.test.js @@ -242,3 +242,87 @@ withFixture('v4/basic', (c) => { }, }) }) + +withFixture('v4/css-loading-js', (c) => { + async function testHover(name, { text, lang, position, expected, expectedRange, settings }) { + test.concurrent(name, async ({ expect }) => { + let textDocument = await c.openDocument({ text, lang, settings }) + let res = await c.sendRequest('textDocument/hover', { + textDocument, + position, + }) + + expect(res).toEqual( + expected + ? { + contents: { + language: 'css', + value: expected, + }, + range: expectedRange, + } + : expected, + ) + }) + } + + testHover('Plugins: ESM', { + text: '
', + position: { line: 0, character: 13 }, + expected: '.bg-esm-from-plugin {\n background-color: black;\n}', + expectedRange: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 30 }, + }, + }) + + testHover('Plugins: CJS', { + text: '
', + position: { line: 0, character: 13 }, + expected: '.bg-cjs-from-plugin {\n background-color: black;\n}', + expectedRange: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 30 }, + }, + }) + + testHover('Plugins: TypeScript', { + text: '
', + position: { line: 0, character: 13 }, + expected: '.bg-ts-from-plugin {\n background-color: black;\n}', + expectedRange: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 29 }, + }, + }) + + testHover('Configs: ESM', { + text: '
', + position: { line: 0, character: 13 }, + expected: '.bg-esm-from-config {\n background-color: black;\n}', + expectedRange: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 30 }, + }, + }) + + testHover('Configs: CJS', { + text: '
', + position: { line: 0, character: 13 }, + expected: '.bg-cjs-from-config {\n background-color: black;\n}', + expectedRange: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 30 }, + }, + }) + + testHover('Configs: TypeScript', { + text: '
', + position: { line: 0, character: 13 }, + expected: '.bg-ts-from-config {\n background-color: black;\n}', + expectedRange: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 29 }, + }, + }) +}) diff --git a/packages/tailwindcss-language-server/tsconfig.json b/packages/tailwindcss-language-server/tsconfig.json index 5e2a7c8c..f69c060b 100755 --- a/packages/tailwindcss-language-server/tsconfig.json +++ b/packages/tailwindcss-language-server/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "module": "commonjs", - "target": "es6", + "target": "ES2018", "lib": ["ES2022"], "rootDir": "..", "sourceMap": true, diff --git a/packages/tailwindcss-language-service/src/features.ts b/packages/tailwindcss-language-service/src/features.ts index b24a4615..1306bcf3 100644 --- a/packages/tailwindcss-language-service/src/features.ts +++ b/packages/tailwindcss-language-service/src/features.ts @@ -4,7 +4,7 @@ export type Feature = | 'layer:preflight' | 'layer:base' | 'css-at-theme' - | 'css-at-config' + | 'css-at-config-as-project' | 'transpiled-configs' | 'relative-content-paths' | 'browserslist-in-plugins' @@ -77,7 +77,7 @@ export function supportedFeatures(version: string): Feature[] { if (semver.gte(version, '3.2.0')) { // Support for the `@config` directive in CSS to customize the located config file - features.push('css-at-config') + features.push('css-at-config-as-project') // Support for relative content paths features.push('relative-content-paths') diff --git a/packages/vscode-tailwindcss/CHANGELOG.md b/packages/vscode-tailwindcss/CHANGELOG.md index 042bd8d9..8cded156 100644 --- a/packages/vscode-tailwindcss/CHANGELOG.md +++ b/packages/vscode-tailwindcss/CHANGELOG.md @@ -2,7 +2,8 @@ ## Prerelease -- Nothing yet! +- Support plugins loaded via `@plugin` in v4 ([#1044](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1044)) +- Support configs loaded via `@config` in v4 ([#1044](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1044)) ## 0.12.8