Spaces:
Sleeping
Sleeping
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: string[] = [] | |
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 (messages.length > 0) { | |
console.log() | |
for (let message of messages) { | |
console.log(message) | |
} | |
} | |
} | |