UNPKG

sakura-cli

Version:

a command line tool for develop web apps

126 lines (102 loc) 5.2 kB
'use strict'; var _prompt = require('prompt'); var _prompt2 = _interopRequireDefault(_prompt); var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _ejs = require('ejs'); var _ejs2 = _interopRequireDefault(_ejs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _init = require('./init.js'); var _init2 = _interopRequireDefault(_init); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cwd = process.cwd(); _prompt2.default.message = "Sakura"; var schema = function schema(name) { return { properties: { tech: { description: "react or normal ?", message: "only inut react or normal !", require: true, pattern: /react|normal/ }, name: { description: "project name ? (" + name + ")", require: true } } }; }; var buildConfig = function buildConfig(name, config) { return Object.assign({ name: name, gitUrl: "", tech: "normal" }, config); }; var createDir = function createDir(config) { try { _fs2.default.mkdirSync(_path2.default.resolve(cwd, "./" + config.name)); console.log(_chalk2.default.green("→ create " + (_path2.default.resolve(cwd, "./" + config.name) + " success!"))); } catch (error) { if (error.code == "EEXIST") { console.log("Sakura: " + _chalk2.default.red("directory is exist")); } else { console.log(error.code, error.message); } process.exit(1); } }; var renderPackageJson = function renderPackageJson(config) { var template = _ejs2.default.compile(_fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/packageJson/" + config.tech + ".package.json"), 'utf-8')); var fileString = template(config); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/package.json"), fileString); console.log("Sakura-cli:", _chalk2.default.green("→ create pacakage.json success")); }; var renderWebpackConfig = function renderWebpackConfig(config) { var webpackDevString = _fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/webpack.config.dev/" + config.tech + ".js"), "utf-8"); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/webpack.config.js"), webpackDevString); var webpackProString = _fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/webpack.config.pro/" + config.tech + ".js"), "utf-8"); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/webpack.config.product.js"), webpackProString); console.log("Sakura-cli:", _chalk2.default.green("→ create webpack.config.js success")); }; var renderSakuraConfig = function renderSakuraConfig(config) { var defaultConfig = require('../template/sakura.default.config.json'); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/sakura.config.json"), JSON.stringify(defaultConfig, null, " ")); console.log("Sakura-cli:", _chalk2.default.green("→ create sakura.config.json success")); }; var renderIndex = function renderIndex(config) { var indexHtmlString = _fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/indexHtml/" + config.tech + ".html"), "utf-8"); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/index.html"), indexHtmlString); var indexJsString = _fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/indexJs/" + config.tech + ".js"), "utf-8"); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/index.js"), indexJsString); console.log("Sakura-cli:", _chalk2.default.green("→ create index.js, index.html success")); }; var renderGulpfile = function renderGulpfile(config) { var gulpfileString = _fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/gulpfile.js"), "utf-8"); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/gulpfile.js"), gulpfileString); console.log("Sakura-cli:", _chalk2.default.green("→ create gulpfile.js success")); console.log("Sakura-cli:", _chalk2.default.yellow("→ Do not forget replace your own cdn keys at gulpfile.js!")); }; var renderStyle = function renderStyle(config) { var styleString = _fs2.default.readFileSync(_path2.default.resolve(__dirname, "../template/style.scss"), "utf-8"); _fs2.default.writeFileSync(_path2.default.resolve(cwd, "./" + config.name + "/style.scss"), styleString); console.log("Sakura-cli:", _chalk2.default.green("→ create style.scss success")); }; module.exports = function (config) { _prompt2.default.start(); _prompt2.default.get(schema(config.name), function (err, result) { Object.keys(result).forEach(function (key) { if (result[key] == "") { delete result[key]; } }); var outConfig = buildConfig(config.name, result); createDir(outConfig); renderPackageJson(outConfig); renderWebpackConfig(outConfig); renderSakuraConfig(outConfig); renderIndex(outConfig); renderGulpfile(outConfig); renderStyle(outConfig); }); };