72 lines
1.8 KiB
JavaScript
Executable File
72 lines
1.8 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/**
|
|
* {}
|
|
* @author yutent<yutent.io@gmail.com>
|
|
* @date 2022/09/28 15:12:45
|
|
*/
|
|
|
|
import fs from 'iofs'
|
|
import { join, normalize } from 'node:path'
|
|
import { red, blue } from 'kolorist'
|
|
|
|
import createServer from './lib/dev.js'
|
|
import compile from './lib/prod.js'
|
|
|
|
const WORK_SPACE = process.cwd()
|
|
const IS_WINDOWS = process.platform === 'win32'
|
|
|
|
const CONFIG_FILE = normalize(join(WORK_SPACE, 'fite.config.js'))
|
|
const PROTOCOL = IS_WINDOWS ? 'file://' : ''
|
|
const NODE_VERSION = process.versions.node.split('.').map(n => +n)
|
|
const ABS_CONFIG_FILEPATH = PROTOCOL + CONFIG_FILE
|
|
|
|
let args = process.argv.slice(2)
|
|
let mode = args.shift() || 'prod'
|
|
let clean = !args.includes('--no-clean') //
|
|
let verbose = args.includes('--verbose') //
|
|
|
|
if (NODE_VERSION[0] < 16 || (NODE_VERSION[0] === 16 && NODE_VERSION[1] < 6)) {
|
|
console.log(red('Error: 你当前的环境不满足 fite 构建工具的要求'))
|
|
console.log(
|
|
'fite 需要Node.js版本在 %s 以上, \n你当前的Node.js版本为: %s',
|
|
blue('v16.6.0'),
|
|
red(process.version),
|
|
'\n\n'
|
|
)
|
|
process.exit()
|
|
}
|
|
|
|
switch (mode) {
|
|
case 'dev':
|
|
process.env.NODE_ENV = 'development'
|
|
|
|
import(ABS_CONFIG_FILEPATH)
|
|
.then(function (conf) {
|
|
conf.default.ABS_CONFIG_FILEPATH = ABS_CONFIG_FILEPATH
|
|
createServer(WORK_SPACE, conf.default)
|
|
})
|
|
.catch(err => {
|
|
console.log(err)
|
|
})
|
|
break
|
|
|
|
case 'build':
|
|
process.env.NODE_ENV = 'production'
|
|
|
|
import(ABS_CONFIG_FILEPATH)
|
|
.then(function (conf) {
|
|
let dist = conf.buildDir || 'dist'
|
|
if (clean && fs.isdir(dist)) {
|
|
console.log('清除dist目录...')
|
|
fs.rm(dist)
|
|
}
|
|
conf.default.ABS_CONFIG_FILEPATH = ABS_CONFIG_FILEPATH
|
|
compile(WORK_SPACE, dist, conf.default, verbose)
|
|
})
|
|
.catch(err => {
|
|
console.log(err)
|
|
})
|
|
break
|
|
}
|