UNPKG

@liferay/generator-js

Version:

Yeoman generators for Liferay DXP and Portal CE JavaScript projects.

110 lines (109 loc) 4.22 kB
"use strict"; /** * SPDX-FileCopyrightText: © 2017 Liferay, Inc. <https://liferay.com> * SPDX-License-Identifier: LGPL-3.0-or-later */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const yeoman_generator_1 = __importDefault(require("yeoman-generator")); const utils_1 = require("../utils"); const ProjectAnalyzer_1 = __importDefault(require("../utils/ProjectAnalyzer")); const npmbuildrc_1 = __importDefault(require("../utils/modifier/npmbuildrc")); const package_json_1 = __importDefault(require("../utils/modifier/package.json")); const standardTarget = __importStar(require("../utils/target/standard")); /** * Implementation of generation of plain JavaScript portlets. */ class default_1 extends yeoman_generator_1.default { /** * Standard Yeoman initialization function */ initializing() { this.sourceRoot(path_1.default.join(__dirname, 'templates')); this.namespace = 'target-vanilla-portlet'; } /** * Standard Yeoman prompt function */ async prompting() { this.answers = await utils_1.promptWithConfig(this, [ { default: true, message: 'Do you want to use Babel to transpile JavaScript sources?', name: 'useBabel', type: 'confirm', }, ]); await standardTarget.prompting(this); } /** * Standard Yeoman generation function */ writing() { const cp = new utils_1.Copier(this); const npmbuildrc = new npmbuildrc_1.default(this); const pkgJson = new package_json_1.default(this); const projectAnalyzer = new ProjectAnalyzer_1.default(this); const { useBabel } = this.answers; // Configure build if (useBabel) { pkgJson.addDevDependency('babel-cli', '6.26.0'); pkgJson.addDevDependency('babel-preset-env', '1.7.0'); pkgJson.addBuildStep('babel --source-maps -d build src'); cp.copyFile('.babelrc'); } else { pkgJson.addBuildStep('npm run copy-sources'); pkgJson.addScript('copy-sources', 'lnbs-copy-sources'); } // Configure webpack if (useBabel) { pkgJson.addDevDependency('babel-loader', '7.1.5'); npmbuildrc.addWebpackRule(/src\/.*\.js$/, 'babel-loader'); } // Prepare text labels const labels = standardTarget.generateLabels(this); // Prepare context const context = standardTarget.generateContext(this, { labels: labels[projectAnalyzer.hasLocalization ? useBabel ? 'template' : 'js' : useBabel ? 'raw' : 'quoted'], }); // Copy JavaScript files pkgJson.setMain('index.js'); cp.copyFile(`src/index.${useBabel ? 'babel' : 'nobabel'}.js`, { context, dest: 'src/index.js', }); // Generate sample contents standardTarget.generateSamples(this, labels); } } exports.default = default_1; module.exports = exports['default'];