Spaces:
Sleeping
Sleeping
| // @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) | |
| } | |
| } | |
| } | |