ciffi
Version:
Ciffi Frontend Generator
91 lines (79 loc) • 2.37 kB
JavaScript
let chalk = require('chalk')
let exec = require('child_process').exec
let Log = require('single-line-log').stdout
let fileExists = require('file-exists')
let ConfigFile = process.cwd() + '/.ciffisettings'
let npm = require('npm')
let Dev = (function() {
let _CONFIG
function Dev() {
if (fileExists.sync(ConfigFile)) {
_CONFIG = require(ConfigFile)
_CONFIG.stylesOutputName = _CONFIG.stylesOutputName
? _CONFIG.stylesOutputName
: 'main.css'
build()
} else {
console.log(
chalk.red.bold('☠️ Project dev failed:') +
' ' +
chalk.blue("can't find .ciffisettings file ☠️")
)
return console.log('')
}
}
function build() {
let _assetPath = _CONFIG.assetsPath
let _assetPathName = _CONFIG.assetsPathName
let _concat = ' && '
let _liveCssFirst =
'./node_modules/.bin/node-sass ' +
_assetPathName +
'/styles/main.scss ' +
_assetPath +
'/' +
_CONFIG.stylesOutputName +
' --source-map true'
let _assets = 'ciffi assets'
let _liveServer = './node_modules/.bin/livereload ' + _assetPath
let _liveCss =
'./node_modules/.bin/node-sass ' +
_assetPathName +
'/styles/main.scss ' +
_assetPath +
'/' +
_CONFIG.stylesOutputName +
' --watch --source-map true'
let _liveJs =
'./node_modules/.bin/webpack --config dev.config.js --progress'
let _processServer = exec(
_liveCssFirst + _concat + _assets + _concat + _liveServer
)
let _processCss = exec(_liveCss)
let _processJS = exec(_liveJs)
logger([_processServer, _processCss, _processJS])
}
function logger(processes) {
for (let i = 0; i < processes.length; i++) {
processes[i].stdout.on('data', function(res) {
if (res.indexOf('ERROR in') >= 0 || res.indexOf('Error:') >= 0) {
console.log(chalk.red(res))
} else {
Log(chalk.blue(res))
}
})
processes[i].stderr.on('data', function(res) {
if (res.indexOf('ERROR in') >= 0 || res.indexOf('Error:') >= 0) {
console.log(chalk.red(res))
} else {
Log(chalk.blue(res))
}
})
processes[i].on('close', function(res) {
Log(chalk.green(res))
})
}
}
return new Dev()
})()
module.exports = Dev