Skip to content

Commit dbd86ee

Browse files
authored
feat: Search for Proper Tailwind Config File (#87)
* feat: Search for Proper Tailwind Config File * Update to Patch Version * Minor tweaks * Proper message when tailwind file not found
1 parent e61f85a commit dbd86ee

16 files changed

+92
-138
lines changed

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "twify",
3-
"version": "0.3.2",
3+
"version": "0.3.3",
44
"description": "A Tool to Setup TailwindCSS in your Project with a Single Command",
55
"bin": {
66
"twify": "dist/main.js"

src/constants.ts

+5
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,8 @@ export const CSS_STUB = `@tailwind base;
44
`;
55

66
export const prettierDependencies = ['prettier', 'prettier-plugin-tailwindcss'];
7+
8+
export const tailwindConfigFiles = [
9+
'tailwind.config.js',
10+
'tailwind.config.cjs',
11+
];

src/content.ts

+12-6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import fs from 'fs-extra';
33
import path from 'path';
44
import j from 'jscodeshift';
55
import { Framework } from './types';
6+
import { tailwindConfigFiles } from './constants';
67

78
export function addContentToCode(code: string, content: string[]): string {
89
const parse = j.withParser('flow');
@@ -23,16 +24,21 @@ export function addContentToCode(code: string, content: string[]): string {
2324

2425
export async function setupContent({ content }: Framework) {
2526
console.log(
26-
`\n${chalk.green('✔')} Configuring ${chalk.blue.bold(
27-
content.name
28-
)} content...`
27+
`\n${chalk.green('✔')} Configuring ${chalk.blue.bold(content)} content...`
2928
);
30-
console.log(chalk.blue(`- ${content.files.join('\n- ')}`));
29+
console.log(chalk.blue(`- ${content.join('\n- ')}`));
3130

32-
const contentPath = path.join(process.cwd(), content.name);
31+
const [contentPath] = tailwindConfigFiles
32+
.map((file) => path.join(process.cwd(), file))
33+
.filter((file) => fs.existsSync(file));
34+
35+
if (!contentPath) {
36+
console.log(chalk.red('✘ Tailwind config not found.'));
37+
return;
38+
}
3339

3440
const fileContent = await fs.readFile(contentPath, 'utf8');
35-
const newContent = addContentToCode(fileContent, content.files);
41+
const newContent = addContentToCode(fileContent, content);
3642

3743
await fs.writeFile(contentPath, newContent);
3844
}

src/frameworks/angular.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ const Angular: Framework = {
44
requiredDependencies: ['tailwindcss', 'postcss', 'autoprefixer'],
55
initCommands: ['npx tailwindcss init'],
66
cssLocation: './src/styles.css',
7-
content: {
8-
name: 'tailwind.config.js',
9-
files: ['./src/**/*.{html,ts}'],
10-
},
7+
content: ['./src/**/*.{html,ts}'],
118
steps: [],
129
};
1310

src/frameworks/cra.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ const CreateReactApp: Framework = {
44
requiredDependencies: ['tailwindcss', 'postcss', 'autoprefixer'],
55
initCommands: ['npx tailwindcss init -p'],
66
cssLocation: './src/index.css',
7-
content: {
8-
name: 'tailwind.config.js',
9-
files: ['./src/**/*.{js,jsx,ts,tsx}'],
10-
},
7+
content: ['./src/**/*.{js,jsx,ts,tsx}'],
118
steps: [],
129
};
1310

src/frameworks/laravel.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@ const Laravel: Framework = {
55
requiredDependencies: ['tailwindcss', 'postcss', 'autoprefixer'],
66
initCommands: ['npx tailwindcss init -p'],
77
cssLocation: './resources/css/app.css',
8-
content: {
9-
name: 'tailwind.config.js',
10-
files: [
11-
'./resources/**/*.blade.php',
12-
'./resources/**/*.{js,jsx,ts,tsx,vue,svelte}',
13-
],
14-
},
8+
content: [
9+
'./resources/**/*.blade.php',
10+
'./resources/**/*.{js,jsx,ts,tsx,vue,svelte}',
11+
],
1512
steps: [setupWelcomePage],
1613
};
1714

src/frameworks/nextjs.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@ const NextJS: Framework = {
44
requiredDependencies: ['tailwindcss', 'postcss', 'autoprefixer'],
55
initCommands: ['npx tailwindcss init -p'],
66
cssLocation: './styles/globals.css',
7-
content: {
8-
name: 'tailwind.config.js',
9-
files: [
10-
'./pages/**/*.{js,ts,jsx,tsx}',
11-
'./components/**/*.{js,ts,jsx,tsx}',
12-
],
13-
},
7+
content: [
8+
'./pages/**/*.{js,ts,jsx,tsx}',
9+
'./components/**/*.{js,ts,jsx,tsx}',
10+
],
1411
steps: [],
1512
};
1613

src/frameworks/nuxt2.ts

+7-10
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@ const NuxtJS: Framework = {
1010
],
1111
initCommands: ['npx tailwindcss init'],
1212
cssLocation: './assets/css/main.css',
13-
content: {
14-
name: 'tailwind.config.js',
15-
files: [
16-
'./components/**/*.{js,vue,ts}',
17-
'./layouts/**/*.vue',
18-
'./pages/**/*.vue',
19-
'./plugins/**/*.{js,ts}',
20-
'./nuxt.config.{js,ts}',
21-
],
22-
},
13+
content: [
14+
'./components/**/*.{js,vue,ts}',
15+
'./layouts/**/*.vue',
16+
'./pages/**/*.vue',
17+
'./plugins/**/*.{js,ts}',
18+
'./nuxt.config.{js,ts}',
19+
],
2320
steps: [setupConfigFile],
2421
};
2522

src/frameworks/nuxt3.ts

+7-10
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,13 @@ const NuxtJS: Framework = {
99
],
1010
initCommands: ['npx tailwindcss init'],
1111
cssLocation: './assets/css/main.css',
12-
content: {
13-
name: 'tailwind.config.js',
14-
files: [
15-
'./components/**/*.{js,vue,ts}',
16-
'./layouts/**/*.vue',
17-
'./pages/**/*.vue',
18-
'./app.vue',
19-
'./plugins/**/*.{js,ts}',
20-
],
21-
},
12+
content: [
13+
'./components/**/*.{js,vue,ts}',
14+
'./layouts/**/*.vue',
15+
'./pages/**/*.vue',
16+
'./app.vue',
17+
'./plugins/**/*.{js,ts}',
18+
],
2219
steps: [setupConfigFile],
2320
};
2421

src/frameworks/remix.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ import { setupIndexFile, setupPackageJson } from './steps/remix';
44
const Remix: Framework = {
55
requiredDependencies: ['tailwindcss', 'postcss', 'autoprefixer'],
66
initCommands: ['npx tailwindcss init -p'],
7-
content: {
8-
name: 'tailwind.config.js',
9-
files: ['./app/**/*.{js,ts,jsx,tsx}'],
10-
},
7+
content: ['./app/**/*.{js,ts,jsx,tsx}'],
118
cssLocation: './styles/app.css',
129
steps: [setupPackageJson, setupIndexFile],
1310
};

src/frameworks/sveltekit.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ const SvelteKit: Framework = {
1414
],
1515
initCommands: ['npx tailwindcss init tailwind.config.cjs -p'],
1616
cssLocation: './src/app.css',
17-
content: {
18-
name: 'tailwind.config.cjs',
19-
files: ['./src/**/*.{html,js,svelte,ts}'],
20-
},
17+
content: ['./src/**/*.{html,js,svelte,ts}'],
2118
steps: [movePostCSS, setupConfigFile, setupLayoutFile],
2219
};
2320

src/frameworks/vite.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ const Vite: Framework = {
55
requiredDependencies: ['tailwindcss', 'postcss', 'autoprefixer'],
66
initCommands: ['npx tailwindcss init -p'],
77
cssLocation: './src/style.css',
8-
content: {
9-
name: 'tailwind.config.js',
10-
files: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx,svelte}'],
11-
},
8+
content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx,svelte}'],
129
steps: [setupMainFile],
1310
};
1411

src/types.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ export interface Framework {
1616
requiredDependencies: string[];
1717
initCommands: string[];
1818
cssLocation: string;
19-
content: {
20-
name: string;
21-
files: string[];
22-
};
19+
content: string[];
2320
steps: Step[];
2421
}
2522

tests/__snapshots__/drivers.spec.ts.snap

+38-65
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
exports[`Drivers > has a list of drivers 1`] = `
44
{
5-
"content": {
6-
"files": [
7-
"./pages/**/*.{js,ts,jsx,tsx}",
8-
"./components/**/*.{js,ts,jsx,tsx}",
9-
],
10-
"name": "tailwind.config.js",
11-
},
5+
"content": [
6+
"./pages/**/*.{js,ts,jsx,tsx}",
7+
"./components/**/*.{js,ts,jsx,tsx}",
8+
],
129
"cssLocation": "./styles/globals.css",
1310
"initCommands": [
1411
"npx tailwindcss init -p",
@@ -24,16 +21,13 @@ exports[`Drivers > has a list of drivers 1`] = `
2421

2522
exports[`Drivers > has a list of drivers 2`] = `
2623
{
27-
"content": {
28-
"files": [
29-
"./components/**/*.{js,vue,ts}",
30-
"./layouts/**/*.vue",
31-
"./pages/**/*.vue",
32-
"./plugins/**/*.{js,ts}",
33-
"./nuxt.config.{js,ts}",
34-
],
35-
"name": "tailwind.config.js",
36-
},
24+
"content": [
25+
"./components/**/*.{js,vue,ts}",
26+
"./layouts/**/*.vue",
27+
"./pages/**/*.vue",
28+
"./plugins/**/*.{js,ts}",
29+
"./nuxt.config.{js,ts}",
30+
],
3731
"cssLocation": "./assets/css/main.css",
3832
"initCommands": [
3933
"npx tailwindcss init",
@@ -52,16 +46,13 @@ exports[`Drivers > has a list of drivers 2`] = `
5246

5347
exports[`Drivers > has a list of drivers 3`] = `
5448
{
55-
"content": {
56-
"files": [
57-
"./components/**/*.{js,vue,ts}",
58-
"./layouts/**/*.vue",
59-
"./pages/**/*.vue",
60-
"./app.vue",
61-
"./plugins/**/*.{js,ts}",
62-
],
63-
"name": "tailwind.config.js",
64-
},
49+
"content": [
50+
"./components/**/*.{js,vue,ts}",
51+
"./layouts/**/*.vue",
52+
"./pages/**/*.vue",
53+
"./app.vue",
54+
"./plugins/**/*.{js,ts}",
55+
],
6556
"cssLocation": "./assets/css/main.css",
6657
"initCommands": [
6758
"npx tailwindcss init",
@@ -79,12 +70,9 @@ exports[`Drivers > has a list of drivers 3`] = `
7970

8071
exports[`Drivers > has a list of drivers 4`] = `
8172
{
82-
"content": {
83-
"files": [
84-
"./app/**/*.{js,ts,jsx,tsx}",
85-
],
86-
"name": "tailwind.config.js",
87-
},
73+
"content": [
74+
"./app/**/*.{js,ts,jsx,tsx}",
75+
],
8876
"cssLocation": "./styles/app.css",
8977
"initCommands": [
9078
"npx tailwindcss init -p",
@@ -103,12 +91,9 @@ exports[`Drivers > has a list of drivers 4`] = `
10391

10492
exports[`Drivers > has a list of drivers 5`] = `
10593
{
106-
"content": {
107-
"files": [
108-
"./src/**/*.{html,js,svelte,ts}",
109-
],
110-
"name": "tailwind.config.cjs",
111-
},
94+
"content": [
95+
"./src/**/*.{html,js,svelte,ts}",
96+
],
11297
"cssLocation": "./src/app.css",
11398
"initCommands": [
11499
"npx tailwindcss init tailwind.config.cjs -p",
@@ -129,13 +114,10 @@ exports[`Drivers > has a list of drivers 5`] = `
129114

130115
exports[`Drivers > has a list of drivers 6`] = `
131116
{
132-
"content": {
133-
"files": [
134-
"./index.html",
135-
"./src/**/*.{vue,js,ts,jsx,tsx,svelte}",
136-
],
137-
"name": "tailwind.config.js",
138-
},
117+
"content": [
118+
"./index.html",
119+
"./src/**/*.{vue,js,ts,jsx,tsx,svelte}",
120+
],
139121
"cssLocation": "./src/style.css",
140122
"initCommands": [
141123
"npx tailwindcss init -p",
@@ -153,12 +135,9 @@ exports[`Drivers > has a list of drivers 6`] = `
153135

154136
exports[`Drivers > has a list of drivers 7`] = `
155137
{
156-
"content": {
157-
"files": [
158-
"./src/**/*.{html,ts}",
159-
],
160-
"name": "tailwind.config.js",
161-
},
138+
"content": [
139+
"./src/**/*.{html,ts}",
140+
],
162141
"cssLocation": "./src/styles.css",
163142
"initCommands": [
164143
"npx tailwindcss init",
@@ -174,12 +153,9 @@ exports[`Drivers > has a list of drivers 7`] = `
174153

175154
exports[`Drivers > has a list of drivers 8`] = `
176155
{
177-
"content": {
178-
"files": [
179-
"./src/**/*.{js,jsx,ts,tsx}",
180-
],
181-
"name": "tailwind.config.js",
182-
},
156+
"content": [
157+
"./src/**/*.{js,jsx,ts,tsx}",
158+
],
183159
"cssLocation": "./src/index.css",
184160
"initCommands": [
185161
"npx tailwindcss init -p",
@@ -195,13 +171,10 @@ exports[`Drivers > has a list of drivers 8`] = `
195171

196172
exports[`Drivers > has a list of drivers 9`] = `
197173
{
198-
"content": {
199-
"files": [
200-
"./resources/**/*.blade.php",
201-
"./resources/**/*.{js,jsx,ts,tsx,vue,svelte}",
202-
],
203-
"name": "tailwind.config.js",
204-
},
174+
"content": [
175+
"./resources/**/*.blade.php",
176+
"./resources/**/*.{js,jsx,ts,tsx,vue,svelte}",
177+
],
205178
"cssLocation": "./resources/css/app.css",
206179
"initCommands": [
207180
"npx tailwindcss init -p",

0 commit comments

Comments
 (0)