mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
Moving to subcommands broke this without us noticing. It's probably a good idea to add a big dirty integration test for this that just executes the CLI command and makes sure the file was created.
96 lines
2.2 KiB
JavaScript
Executable File
96 lines
2.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
import fs from 'fs-extra'
|
|
import _ from 'lodash'
|
|
import path from 'path'
|
|
import postcss from 'postcss'
|
|
import defaultConfig from '../defaultConfig'
|
|
import program from 'commander'
|
|
import tailwind from '..'
|
|
|
|
function loadConfig(configPath) {
|
|
if (configPath === undefined) {
|
|
return undefined
|
|
}
|
|
|
|
if (! fs.existsSync(path.resolve(configPath))) {
|
|
console.error(`Config file [${configPath}] does not exist.`)
|
|
process.exit(1)
|
|
}
|
|
|
|
return require(path.resolve(configPath))
|
|
}
|
|
|
|
function writeStrategy(options) {
|
|
if (options.output === undefined) {
|
|
return (output) => {
|
|
process.stdout.write(output)
|
|
}
|
|
}
|
|
return (output) => {
|
|
fs.outputFileSync(options.output, output)
|
|
}
|
|
}
|
|
|
|
function buildTailwind(inputFile, config, write) {
|
|
console.log('Building Tailwind!')
|
|
|
|
const input = fs.readFileSync(inputFile, 'utf8')
|
|
|
|
return postcss([tailwind(config)])
|
|
.process(input)
|
|
.then(result => {
|
|
write(result.css)
|
|
console.log('Finished building Tailwind!')
|
|
})
|
|
.catch(error => console.log(error))
|
|
}
|
|
|
|
program.version('0.1.0').usage('<command> [<args>]')
|
|
|
|
program.command('init [filename]')
|
|
.usage('[options] [filename]')
|
|
.action(function (filename = 'tailwind.js') {
|
|
const destination = path.resolve(filename)
|
|
|
|
if (fs.existsSync(destination)) {
|
|
console.log(`Destination ${destination} already exists, aborting.`)
|
|
process.exit(1)
|
|
}
|
|
|
|
const output = fs.readFileSync(path.resolve(__dirname + '/../defaultConfig.js'), 'utf8')
|
|
fs.outputFileSync(destination, output.replace('// var defaultConfig', 'var defaultConfig'))
|
|
process.exit()
|
|
})
|
|
|
|
program.command('build')
|
|
.usage('[options] <file ...>')
|
|
.option('-c, --config [path]', 'Path to config file')
|
|
.option('-o, --output [path]', 'Output file')
|
|
.action(function (file, options) {
|
|
let inputFile = program.args[0]
|
|
|
|
if (! inputFile) {
|
|
console.error('No input file given!')
|
|
process.exit(1)
|
|
}
|
|
|
|
buildTailwind(inputFile, loadConfig(program.config), writeStrategy(options))
|
|
.then(function () {
|
|
process.exit()
|
|
})
|
|
})
|
|
|
|
program.command('*')
|
|
.action(function () {
|
|
program.help()
|
|
})
|
|
|
|
|
|
program.parse(process.argv)
|
|
|
|
if (program.args.length === 0 ) {
|
|
program.help()
|
|
process.exit()
|
|
}
|