|
|
|
|
|
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' |
|
) |
|
|
|
|
|
stubContentsFile = stubContentsFile.replace('../colors', 'tailwindcss/colors') |
|
|
|
|
|
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) |
|
} |
|
} |
|
} |
|
|