Skip to content

Commit

Permalink
feat: 🎸 add runtime option tailwindcssConfigPath
Browse files Browse the repository at this point in the history
  • Loading branch information
shufo committed Sep 19, 2022
1 parent 9de31d0 commit 9fb09fd
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 4 deletions.
11 changes: 8 additions & 3 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ import ignore from "ignore";
import { Formatter } from "blade-formatter";
import { setExtensionContext } from './extensionContext';
import { telemetry, TelemetryEventNames } from './telemetry';
import { readRuntimeConfig } from './runtimeConfig';
import { findConfigFile, readRuntimeConfig } from './runtimeConfig';
import { ExtensionConstants } from "./constants";
import { messages } from "./messages";
import { formatFromCommand } from "./commands";
import { getCoreNodeModule } from "./util";
import { getCoreNodeModule, requireUncached } from "./util";
import { resolveTailwindConfig } from "./tailwind";

const { Range, Position } = vscode;
const vsctmModule = getCoreNodeModule("vscode-textmate");
Expand Down Expand Up @@ -72,6 +73,10 @@ export function activate(context: ExtensionContext) {

const runtimeConfig = readRuntimeConfig(document.uri.fsPath);

if (runtimeConfig?.tailwindcssConfigPath) {
runtimeConfig.tailwindcssConfigPath = resolveTailwindConfig(document.uri.fsPath, runtimeConfig?.tailwindcssConfigPath ?? '');
}

const options = {
vsctm: vsctmModule,
oniguruma: onigurumaModule,
Expand All @@ -82,7 +87,7 @@ export function activate(context: ExtensionContext) {
sortTailwindcssClasses: extConfig.sortTailwindcssClasses,
sortHtmlAttributes: extConfig.sortHtmlAttributes ?? 'none',
noMultipleEmptyLines: extConfig.noMultipleEmptyLines,
...runtimeConfig,
...runtimeConfig, // override all settings by runtime config
};

const progressMessage = isLargeFile(document) ? messages.largeFileFormattingMessage : messages.formattingMessage;
Expand Down
4 changes: 3 additions & 1 deletion src/runtimeConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export interface RuntimeConfig {
useTabs?: boolean;
sortTailwindcssClasses?: boolean;
sortHtmlAttributes?: string;
tailwindcssConfigPath?: string;
noMultipleEmptyLines?: boolean;
}

Expand Down Expand Up @@ -55,6 +56,7 @@ export function readRuntimeConfig(filePath: string): RuntimeConfig | undefined {
useTabs: { type: 'boolean' },
sortTailwindcssClasses: { type: 'boolean' },
sortHtmlAttributes: { type: 'string' },
tailwindcssConfigPath: { type: 'string' },
noMultipleEmptyLines: { type: 'boolean' },
},
additionalProperties: true,
Expand All @@ -63,7 +65,7 @@ export function readRuntimeConfig(filePath: string): RuntimeConfig | undefined {
return parse(configFileContent);
}

function findConfigFile(filePath: string): string | null {
export function findConfigFile(filePath: string): string | null {
for (let i = 0; i < configFileNames.length; i++) {
const result: string | null = findConfig(configFileNames[i], {
cwd: path.dirname(filePath),
Expand Down
25 changes: 25 additions & 0 deletions src/tailwind.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import findConfig from 'find-config';
import path from 'path';
import { findConfigFile } from './runtimeConfig';

const __config__ = 'tailwind.config.js';

/**
* Resolve tailwind config path if resolvable
*
* @param filepath string
* @param optionPath string
*/
export function resolveTailwindConfig(filepath: string, optionPath: string): string {
if (!optionPath) {
return findConfig(__config__, { cwd: path.dirname(filepath) }) ?? '';
}

if (path.isAbsolute(optionPath ?? '')) {
return optionPath;
}

const runtimeConfigPath = findConfigFile(filepath);

return path.resolve(path.dirname(runtimeConfigPath ?? ''), optionPath ?? '');
}

0 comments on commit 9fb09fd

Please sign in to comment.