diff options
Diffstat (limited to 'node_modules/tailwindcss/src/cli/init/index.js')
| -rw-r--r-- | node_modules/tailwindcss/src/cli/init/index.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/src/cli/init/index.js b/node_modules/tailwindcss/src/cli/init/index.js new file mode 100644 index 0000000..6bd7e41 --- /dev/null +++ b/node_modules/tailwindcss/src/cli/init/index.js @@ -0,0 +1,79 @@ +// @ts-check + +import fs from 'fs' +import path from 'path' + +function isESM() { + const pkgPath = path.resolve('./package.json') + + try { + let pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')) + return pkg.type && pkg.type === 'module' + } catch (err) { + return false + } +} + +export function init(args) { + let messages = [] + + let isProjectESM = args['--ts'] || args['--esm'] || isESM() + let syntax = args['--ts'] ? 'ts' : isProjectESM ? 'js' : 'cjs' + let extension = args['--ts'] ? 'ts' : 'js' + + let tailwindConfigLocation = path.resolve(args['_'][1] ?? `./tailwind.config.${extension}`) + + if (fs.existsSync(tailwindConfigLocation)) { + messages.push(`${path.basename(tailwindConfigLocation)} already exists.`) + } else { + let stubContentsFile = fs.readFileSync( + args['--full'] + ? path.resolve(__dirname, '../../../stubs/config.full.js') + : path.resolve(__dirname, '../../../stubs/config.simple.js'), + 'utf8' + ) + + let stubFile = fs.readFileSync( + path.resolve(__dirname, `../../../stubs/tailwind.config.${syntax}`), + 'utf8' + ) + + // Change colors import + stubContentsFile = stubContentsFile.replace('../colors', 'tailwindcss/colors') + + // Replace contents of {ts,js,cjs} file with the stub {simple,full}. + stubFile = + stubFile + .replace('__CONFIG__', stubContentsFile.replace('module.exports =', '').trim()) + .trim() + '\n\n' + + fs.writeFileSync(tailwindConfigLocation, stubFile, 'utf8') + + messages.push(`Created Tailwind CSS config file: ${path.basename(tailwindConfigLocation)}`) + } + + if (args['--postcss']) { + let postcssConfigLocation = path.resolve('./postcss.config.js') + if (fs.existsSync(postcssConfigLocation)) { + messages.push(`${path.basename(postcssConfigLocation)} already exists.`) + } else { + let stubFile = fs.readFileSync( + isProjectESM + ? path.resolve(__dirname, '../../../stubs/postcss.config.js') + : path.resolve(__dirname, '../../../stubs/postcss.config.cjs'), + 'utf8' + ) + + fs.writeFileSync(postcssConfigLocation, stubFile, 'utf8') + + messages.push(`Created PostCSS config file: ${path.basename(postcssConfigLocation)}`) + } + } + + if (messages.length > 0) { + console.log() + for (let message of messages) { + console.log(message) + } + } +} |