UNPKG

create-component-template

Version:
135 lines (103 loc) 4.34 kB
#!/usr/bin/env node 'use strict'; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* This is a React component generator script. It will generate the basic layout of a component for you. For ease of use this should run via the package.json scripts section. This will output the resulting folder structure: a) ComponentName b) ├── ComponentName.js c) ├── __fixtures__ d) │ └── ComponentName.fixture.js e) ├── __tests__ f) │ └── ComponentName.test.js g) ├── __themes__ h) │ └── ComponentName.scss i) └── index.js a: Component Folder b: '' Class c: '' Fixtures Folder -> For React cosmos d: '' Fixture code for cosmos to render component e: '' Tests Folder -> For Jest f: '' Test Code g: '' Themes Folder -> Should contain scss files h: '' The default scss style sheet i: '' Index file for importing / exporting the component j: '' Components package.json */ var fs = require('fs'); var util = require('util'); var mkdirp = require('mkdirp-promise'); var _require = require('./lib/utils/logger'), logInfo = _require.logInfo, logSuccess = _require.logSuccess, logError = _require.logError; var cliArgs = require('./lib/args/parser'); var promptUser = require('./lib/user-prompt/prompt'); var mapConfigWithTemplates = require('./lib/config/map-paths'); var writeFile = util.promisify(fs.writeFile); (function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { var componentName, componentPath, configPath, userResponse, _ref2, folderPaths, templatePaths; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: componentName = void 0; componentPath = void 0; _context.prev = 2; configPath = cliArgs.configPath; _context.next = 6; return promptUser(cliArgs); case 6: userResponse = _context.sent; componentName = userResponse.componentName; componentPath = userResponse.componentPath; _context.next = 11; return mapConfigWithTemplates(configPath, componentName, componentPath); case 11: _ref2 = _context.sent; folderPaths = _ref2.folderPaths; templatePaths = _ref2.templatePaths; logInfo('Generating Component: ' + componentName); // Make all directories _context.next = 17; return _promise2.default.all(folderPaths.map(function (folderName) { return mkdirp(folderName); })); case 17: _context.next = 19; return _promise2.default.all(templatePaths.map(function (_ref3) { var templatePath = _ref3.templatePath, filePath = _ref3.filePath; return writeFile(filePath, require(templatePath)(componentName)); })); case 19: _context.next = 26; break; case 21: _context.prev = 21; _context.t0 = _context['catch'](2); logError(_context.t0); logError('Component ' + componentName + ' could not be built! Please check the above error log.\n'); process.exit(1); case 26: logSuccess('Component ' + componentName + ' was created succesfully! \nIt can be found at: \'' + componentPath + '/' + componentName + '\'.'); case 27: case 'end': return _context.stop(); } } }, _callee, this, [[2, 21]]); })); function createComponent() { return _ref.apply(this, arguments); } return createComponent; })()();