UNPKG

@lidhium/cli

Version:

micro-frontend cli packed with webpack

164 lines (163 loc) 7.22 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const file_manager_1 = require("../file-manager"); const chalk_1 = __importDefault(require("chalk")); const config_1 = require("../config"); const fs_1 = __importDefault(require("fs")); const common_1 = require("../utils/common"); exports.default = () => (appName) => __awaiter(void 0, void 0, void 0, function* () { (0, common_1.printLibraryHeader)(); const isFileExist = fs_1.default.existsSync(`./lidhium.config.json`); if (isFileExist) { console.error(chalk_1.default.red(`lidhium.config.json already exists`), chalk_1.default.green(`Run ${chalk_1.default.magenta(`'lidhium generate <appName> <Port> for creating a new app'`)}`)); return; } const { selectedApp, selectedBundle } = { selectedApp: "Vue3", selectedBundle: "webpack", }; // await inquirer.prompt([ // { // type: "list", // Works like a radio button // name: "selectedApp", // message: "Select App:", // choices: ["Vue3", "React", "Angular"], // }, // { // type: "list", // Works like a radio button // name: "selectedBundle", // message: "Select Bundler:", // choices: ["webpack", "vite"], // }, // ]); console.log(selectedApp, selectedBundle); console.log(chalk_1.default.green(`Creating ${appName}`)); (0, file_manager_1.createFolder)(`./${appName}`); (0, file_manager_1.createFolder)(`./${appName}/apps`); (0, file_manager_1.createFolder)(`./${appName}/global`); (0, file_manager_1.createFile)(`./${appName}/lidhium.config.json`, JSON.stringify({ project: appName, webapp: selectedApp.toLowerCase(), bundler: selectedBundle, apps: {}, }, null, 2)); (0, file_manager_1.createFile)(`./${appName}/package.json`, JSON.stringify({ name: appName, private: true, scripts: { start: "lidhium start", build: "lidhium build", "dev-tool": "lidhium dev-tool", }, dependencies: { "@module-federation/runtime": "^0.11.4", "core-js": "3.40.0", "eslint-config-prettier": "10.0.1", fs: "^0.0.1-security", "node-polyfill-webpack-plugin": "^4.1.0", postcss: "^8.4.35", prettier: "^3.4.2", "regenerator-runtime": "0.14.1", "register-service-worker": "^1.7.2", tailwindcss: "^3.4.1", vue: "3", "vue-class-component": "^8.0.0-0", "vue-router": "^4.5.0", vuex: "^4.0.0", webpack: "^5.97.1", "webpack-cli": "^6.0.1", "webpack-merge": "^6.0.1", }, devDependencies: { "@babel/core": "^7.26.0", "@babel/preset-env": "^7.26.0", "@lidhium/common": "1.0.3", "@types/jest": "^29.5.14", "@types/mocha": "^10.0.10", "@types/node": "^22.13.8", "@types/webpack-env": "^1.18.4", "@typescript-eslint/eslint-plugin": "^8.24.1", "@typescript-eslint/parser": "^8.24.1", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-e2e-cypress": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", "@vue/cli-plugin-pwa": "~5.0.0", "@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-typescript": "~5.0.0", "@vue/cli-plugin-unit-jest": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-service": "~5.0.0", "@vue/eslint-config-standard": "^9.0.0", "@vue/eslint-config-typescript": "^14.4.0", "@vue/test-utils": "^2.0.0-0", "@vue/vue3-jest": "^29.2.6", ajv: "^8.17.1", "ajv-keywords": "^5.1.0", autoprefixer: "^10.4.17", "babel-jest": "^29.7.0", "babel-loader": "^9.2.1", "css-loader": "^7.1.2", cypress: "^14.0.3", eslint: "^9.21.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^7.2.1", "eslint-plugin-vue": "^9.32.0", "file-loader": "^6.2.0", jest: "^29.7.0", sass: "^1.83.1", "sass-loader": "^16.0.4", "schema-utils": "^4.3.0", "style-loader": "^4.0.0", "terser-webpack-plugin": "^5.3.12", "ts-jest": "^29.2.6", "ts-loader": "^9.5.1", typescript: "^5.7.2", "vue-loader": "^17.4.2", "vue-template-compiler": "^2.7.16", "webpack-bundle-analyzer": "^4.10.2", "webpack-dev-server": "^5.2.0", "compression-webpack-plugin": "^11.1.0", }, }, null, 2)); (0, file_manager_1.createFile)(`./${appName}/tsconfig.json`, JSON.stringify({ compilerOptions: { target: "ESNext", module: "ESNext", strict: true, jsx: "preserve", moduleResolution: "Node", experimentalDecorators: true, skipLibCheck: true, esModuleInterop: true, allowSyntheticDefaultImports: true, forceConsistentCasingInFileNames: true, useDefineForClassFields: true, sourceMap: true, lib: ["ESNext", "DOM", "DOM.Iterable", "ScriptHost"], paths: { "@config": ["./package.json"], }, types: ["webpack-env", "jest"], }, exclude: ["node_modules", "dist"], }, null, 2)); (0, file_manager_1.copyFolder)(`../static/config_files`, `./${appName}`); (0, file_manager_1.copyFolder)(`../static/global`, `./${appName}/global`); console.log(chalk_1.default.green(`Created ${chalk_1.default.yellow(appName)} with ${chalk_1.default.yellow(selectedApp)} and ${chalk_1.default.yellow(selectedBundle)} successfully`)); console.log(chalk_1.default.green(`Run ${chalk_1.default.magenta(`cd ${appName}`)}`)); console.log(chalk_1.default.green(`Run ${chalk_1.default.magenta(`install dependencies`)}`)); console.log(chalk_1.default.green(`For more details visit ${chalk_1.default.magenta(`${config_1.config.docs.webUrl}/docs/getting-started`)}`)); });