UNPKG

frontbox

Version:
211 lines (190 loc) 8.91 kB
var fs = require('fs'); var path = require('path'); var fse = require('fs-extra'); var folders = { base: ['_build', '_templates', '_styles'], build: ['css', 'fonts', 'img', 'js'], templates: ['components', 'components/home', 'config', 'config/data', 'mixins', 'modules', 'posts'], styles: ['base', 'components', 'layouts', 'layouts/home', 'vendor'] }; var rootFile = ['.gitattributes', '.gitignore', 'gulpfile.js', 'package.json', '.eslintrc.js']; var templatesFile = { file: ['root', 'components', 'mixins', 'modules'], root: ['config.yml', 'index.jade'], components: ['_header', '_footer', 'home/_home'], mixins: ['_mixins', '_svg'], modules: ['_fav', '_scripts', '_styles'] }; var stylesFile = { root: ['_config', 'main'], base: ['_base', '_colors', '_default', '_fonts', '_mixins', '_reset', '_states', '_typography', '_vars'], components: ['_breakpoint', '_buttons', '_components', '_flexbox', '_forms', '_headings', '_images', '_input', '_links', '_lists', '_paragraphs', '_tables'], layouts: ['_layouts', '_header', '_footer', 'home/_home'], vendor: ['_overrides'] }; var extTemplate = '.jade'; var extStyle = '.' + process.argv[2]; function fixMd() { var dir = __dirname + '\\data\\'; var md = fs.readFileSync(dir + 'fix-md.txt', 'utf8'); fs.writeFile(process.cwd() + '/node_modules/gulp-markdown-to-json/index.js', md); } function createFolder() { var i; var dir = process.cwd(); // make folders for (i = 0; i < folders.base.length; i++) { if (!fs.existsSync(dir + '/' + folders.base[i])) fs.mkdir(dir + '/' + folders.base[i]); } // make build for (i = 0; i < folders.build.length; i++) { if (!fs.existsSync(dir + '/' + folders.base[0] + '/' + folders.build[i])) fs.mkdir(dir + '/' + folders.base[0] + '/' + folders.build[i]); } // make templates for (i = 0; i < folders.templates.length; i++) { if (!fs.existsSync(dir + '/' + folders.base[1] + '/' + folders.templates[i])) fs.mkdir(dir + '/' + folders.base[1] + '/' + folders.templates[i]); } // make styles for (i = 0; i < folders.styles.length; i++) { if (!fs.existsSync(dir + '/' + folders.base[2] + '/' + folders.styles[i])) fs.mkdir(dir + '/' + folders.base[2] + '/' + folders.styles[i]); } } function createRootFile() { var dir = process.cwd(); for (var i = 0; i < rootFile.length; i++) { if (!fs.existsSync(dir + '/' + rootFile[i])) fs.closeSync(fs.openSync(dir + '/' + rootFile[i], 'w')); } } function createTemplatesFile(ext) { var i; var dir = process.cwd() + '\\_templates\\'; // // make build for (i = 0; i < templatesFile.root.length; i++) { if (!fs.existsSync(dir + templatesFile.root[i])) fs.closeSync(fs.openSync(dir + templatesFile.root[i], 'w')); } // make templates for (i = 0; i < templatesFile.components.length; i++) { if (!fs.existsSync(dir + "\\components\\" + templatesFile.components[i] + ext)) fs.closeSync(fs.openSync(dir + "\\components\\" + templatesFile.components[i] + ext, 'w')); } // make styles for (i = 0; i < templatesFile.mixins.length; i++) { if (!fs.existsSync(dir + "\\mixins\\" + templatesFile.mixins[i] + ext)) fs.closeSync(fs.openSync(dir + "\\mixins\\" + templatesFile.mixins[i] + ext, 'w')); } // make styles for (i = 0; i < templatesFile.modules.length; i++) { if (!fs.existsSync(dir + "\\modules\\" + templatesFile.modules[i] + ext)) fs.closeSync(fs.openSync(dir + "\\modules\\" + templatesFile.modules[i] + ext, 'w')); } fs.closeSync(fs.openSync(dir + "\\posts\\posts.md", 'w')); fs.closeSync(fs.openSync(dir + "\\config\\posts.json", 'w')); fs.closeSync(fs.openSync(dir + "\\config\\config.json", 'w')); } function createStylesFile(ext) { var i; var dir = process.cwd() + '\\_styles\\'; // // make build for (i = 0; i < stylesFile.root.length; i++) { if (!fs.existsSync(dir + stylesFile.root[i] + ext)) fs.closeSync(fs.openSync(dir + stylesFile.root[i] + ext, 'w')); } // make templates for (i = 0; i < stylesFile.base.length; i++) { if (!fs.existsSync(dir + "\\base\\" + stylesFile.base[i] + ext)) fs.closeSync(fs.openSync(dir + "\\base\\" + stylesFile.base[i] + ext, 'w')); } // make styles for (i = 0; i < stylesFile.components.length; i++) { if (!fs.existsSync(dir + "\\components\\" + stylesFile.components[i] + ext)) fs.closeSync(fs.openSync(dir + "\\components\\" + stylesFile.components[i] + ext, 'w')); } // make styles for (i = 0; i < stylesFile.layouts.length; i++) { if (!fs.existsSync(dir + "\\layouts\\" + stylesFile.layouts[i] + ext)) fs.closeSync(fs.openSync(dir + "\\layouts\\" + stylesFile.layouts[i] + ext, 'w')); } // make styles for (i = 0; i < stylesFile.vendor.length; i++) { if (!fs.existsSync(dir + "\\vendor\\" + stylesFile.vendor[i] + ext)) fs.closeSync(fs.openSync(dir + "\\vendor\\" + stylesFile.vendor[i] + ext, 'w')); } } function writeFile() { var dir = __dirname + '\\data\\'; var gita = fs.readFileSync(dir + 'gitattributes.txt', 'utf8'); var giti = fs.readFileSync(dir + 'gitignore.txt', 'utf8'); var gulpsass = fs.readFileSync(dir + 'gulpfilesass.txt', 'utf8'); var gulpstylus = fs.readFileSync(dir + 'gulpfilestylus.txt', 'utf8'); var eslint = fs.readFileSync(dir + 'eslint.txt', 'utf8'); var bower = fs.readFileSync(dir + 'bower.txt', 'utf8'); var bowerrc = fs.readFileSync(dir + 'bowerrc.txt', 'utf8'); var pack = fs.readFileSync(dir + 'package.txt', 'utf8'); var dirTD = __dirname + '\\data\\templates\\'; var conf = fs.readFileSync(dirTD + 'config.txt', 'utf8'); var fav = fs.readFileSync(dirTD + 'fav.txt', 'utf8'); var index = fs.readFileSync(dirTD + 'index.txt', 'utf8'); var script = fs.readFileSync(dirTD + 'scripts.txt', 'utf8'); var styles = fs.readFileSync(dirTD + 'styles.txt', 'utf8'); var data = fs.readFileSync(dirTD + 'data.txt', 'utf8'); var posts = fs.readFileSync(dirTD + 'posts.txt', 'utf8'); var postsjson = fs.readFileSync(dirTD + 'postsjson.txt', 'utf8'); var configjson = fs.readFileSync(dirTD + 'configjson.txt', 'utf8'); var dirSD = __dirname + '\\data\\styles\\'; var base = fs.readFileSync(dirSD + 'base.txt', 'utf8'); var components = fs.readFileSync(dirSD + 'components.txt', 'utf8'); var layouts = fs.readFileSync(dirSD + 'layouts.txt', 'utf8'); var main = fs.readFileSync(dirSD + 'main.txt', 'utf8'); var reset = fs.readFileSync(dirSD + 'reset.txt', 'utf8'); var dirR = process.cwd(); fs.writeFile(dirR + '/.gitattributes', gita); fs.writeFile(dirR + '/.gitignore', giti); if (process.argv[2] === 'sass' || process.argv[2] === 'scss') { fs.writeFile(dirR + '/gulpfile.js', gulpsass); } else if (process.argv[2] === 'styl' || process.argv[2] === 'stylus') { fs.writeFile(dirR + '/gulpfile.js', gulpstylus); } fs.writeFile(dirR + '/bower.json', bower); fs.writeFile(dirR + '/.bowerrc', bowerrc); fs.writeFile(dirR + '/.eslintrc.js', eslint); fs.writeFile(dirR + '/package.json', pack); var dirT = process.cwd() + '\\_templates\\'; fs.writeFile(dirT + '/config.yml', conf); fs.writeFile(dirT + '/index.jade', index); fs.writeFile(dirT + '/modules/_scripts.jade', script); fs.writeFile(dirT + '/modules/_styles.jade', styles); fs.writeFile(dirT + '/modules/_fav.jade', fav); fs.writeFile(dirT + '/config/data/data.json', data); fs.writeFile(dirT + '/posts/posts.md', posts); fs.writeFile(dirT + '/config/posts.json', postsjson); fs.writeFile(dirT + '/config/config.json', configjson); var dirS = process.cwd() + '\\_styles\\'; fs.writeFile(dirS + '/base/_base' + extStyle, base); fs.writeFile(dirS + '/components/_components' + extStyle, components); fs.writeFile(dirS + '/layouts/_layouts' + extStyle, layouts); fs.writeFile(dirS + '/main' + extStyle, main); fs.writeFile(dirS + '/base/_reset' + extStyle, reset); } function copyBuild() { var dir = process.cwd() + '\\_build\\'; var dirB = __dirname + '\\data\\build\\'; fse.copy(dirB, dir); } module.exports = function() { if (process.argv[2] === 'fixmd') { fixMd(); } else { createFolder(); createRootFile(); createTemplatesFile(extTemplate); createStylesFile(extStyle); writeFile(); copyBuild(); } };