{"version":3,"sources":["jsdelivr-header.js","/npm/ys-cli-react@1.0.52/bin/index.js"],"names":[],"mappings":"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","file":"/npm/ys-cli-react@1.0.52/bin/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ys-cli-react@1.0.52/bin/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\r\nconst spawn = require('cross-spawn');\r\nconst path = require('path');\r\nconst fs = require('graceful-fs');\r\nconst term = require( 'terminal-kit' ).terminal;\r\nconst ora = require('ora');\r\n\r\nlet appType = '常规应用';\r\nlet tool = 'vite';\r\nlet isMicroApp = false;\r\nlet isMainProject = true;\r\nlet mainDirName = '';\r\nconst argv = process.argv.slice(2);\r\nlet dirName = argv[0];\r\n\r\n\r\nconst selectAppType = () => {\r\n    return new Promise((resolve, reject) => {\r\n        term.cyan( '请选择应用类型' ) ;\r\n        var items = [\r\n            '常规应用' ,\r\n            '微应用'\r\n        ] ;\r\n        term.singleColumnMenu( items , function( error , response ) {\r\n            term( '\\n' ).eraseLineAfter.green(\r\n                response.selectedIndex == '0' ? \"您选择了%s\\n\" : \"%s仅支持webpack打包\\n\",\r\n                response.selectedText ,\r\n            );\r\n            resolve(response.selectedText);\r\n        });\r\n    })\r\n    \r\n}\r\n\r\nconst selectPackTool = () => {\r\n    return new Promise((resolve, reject) => {\r\n        term.cyan( '请选择打包工具' ) ;\r\n        var items = [\r\n            'vite' ,\r\n            'webpack'\r\n        ] ;\r\n        term.singleColumnMenu( items , function( error , response ) {\r\n            term( '\\n' ).eraseLineAfter.green(\r\n                \"正在使用%s生成项目\\n\" ,\r\n                response.selectedText ,\r\n            );\r\n            resolve(response.selectedText);\r\n        });\r\n    })\r\n}\r\n\r\nconst inputField = () => {\r\n    return new Promise((resolve, reject) => {\r\n        \r\n        term.inputField({}, (err, input) => {\r\n             resolve(input);   \r\n             term( '\\n' )\r\n        })\r\n    })\r\n    \r\n}\r\n\r\n\r\nconst copyFolder = (srcDir, tarDir) => {\r\n    const files = fs.readdirSync(srcDir);\r\n    files.forEach(file => {\r\n        const srcPath = path.join(srcDir, file);\r\n        const tarPath = path.join(tarDir, file);\r\n        if (fs.statSync(srcPath).isDirectory()) {\r\n            fs.mkdirSync(tarPath);\r\n            copyFolder(srcPath, tarPath)\r\n        } else {\r\n            fs.writeFileSync(tarPath, fs.readFileSync(srcPath))\r\n            term( '\\n' ).eraseLineAfter.cyan(`生成文件${tarPath}`)\r\n        }\r\n    })\r\n}\r\n\r\n\r\n\r\nconst makeDir = () => {\r\n    const context = path.join(process.cwd(), dirName)\r\n    fs.mkdirSync(context);\r\n    process.chdir(context)\r\n}\r\n\r\nconst install = () => {\r\n    const ls = spawn('npm', ['install']);\r\n    return new Promise((resolve, reject) => {\r\n        ls.on('close', function (code) {\r\n            resolve();\r\n        })\r\n    })\r\n}\r\n\r\nconst reduceFile = async (tool) => {\r\n    const packagePath = path.join(__dirname, `${tool}/package.json`);\r\n    const ysReactConfigPath = path.join(process.cwd(), 'node_modules/ys-react-config');\r\n    const rootPath = process.cwd();\r\n    let packageJson = JSON.parse(fs.readFileSync(packagePath));\r\n    packageJson.name = dirName;\r\n    if (isMicroApp && isMainProject) {\r\n        packageJson.devDependencies.qiankun = \"^2.6.3\";\r\n    }\r\n    fs.writeFileSync(path.join(rootPath, './package.json'), JSON.stringify(packageJson, null, 4))\r\n    \r\n    console.log('📦install dependencies...')\r\n    const spinner = ora('Loading').start();\r\n    await install();\r\n    spinner.stop()\r\n    console.log('install complete')\r\n\r\n\r\n    if(tool === 'vite') {\r\n        fs.writeFileSync(path.join(rootPath, './index.html'), fs.readFileSync(path.join(ysReactConfigPath, './index.html')))\r\n        fs.writeFileSync(path.join(rootPath, './vite.config.js'), fs.readFileSync(path.join(__dirname, `${tool}/vite.config.js`)))\r\n    } else {\r\n        fs.mkdirSync(path.join(rootPath, './public'))\r\n        fs.writeFileSync(path.join(rootPath, './public/index.html'), fs.readFileSync(path.join(ysReactConfigPath, './public/index.html')))\r\n    }\r\n    \r\n    let copyFilesPath = ['./template/react-template'];\r\n    if (isMicroApp) {\r\n        if (isMainProject) {\r\n            copyFilesPath = ['./template/qiankun-template/main']\r\n        } else {\r\n            copyFilesPath = ['./template/qiankun-template/micro']\r\n        }\r\n    }\r\n    copyFilesPath.forEach(item => {\r\n        const copyPath = path.join(ysReactConfigPath, item);\r\n        const newPath = path.join(process.cwd(), './');\r\n        copyFolder(copyPath, rootPath)\r\n    })\r\n    \r\n\r\n    if (isMicroApp && isMainProject) {\r\n        term( '\\n' ).eraseLineAfter.green('创建主应用完成,开始创建子应用')\r\n        term( '\\n' ).eraseLineAfter.green('请输入子应用名称：')\r\n        term( '\\n' )\r\n        isMainProject = false;\r\n    } else {\r\n        term( '\\n' ).eraseLineAfter.green('创建项目完成')\r\n        term( '\\n' )\r\n        \r\n        if (isMicroApp) {\r\n            term( '\\n' ).eraseLineAfter.green('运行主应用：')\r\n            term( '\\n' ).eraseLineAfter.green(`cd ${mainDirName}`)\r\n            term( '\\n' ).eraseLineAfter.green(`npm run start:open`)\r\n            term( '\\n' )\r\n            term( '\\n' ).eraseLineAfter.green('运行子应用：')\r\n            term( '\\n' ).eraseLineAfter.green(`cd ${dirName}`)\r\n            term( '\\n' ).eraseLineAfter.green(`npm run start`)\r\n        } else {\r\n            term( '\\n' ).eraseLineAfter.green('运行项目：')\r\n            term( '\\n' ).eraseLineAfter.green(`cd ${dirName}`)\r\n            term( '\\n' ).eraseLineAfter.green(`npm run start:open`)\r\n        }\r\n        process.exit();\r\n    }\r\n}\r\n\r\n\r\n\r\nconst run = async() => {\r\n    try {\r\n        appType = await selectAppType();\r\n        if (appType === '微应用') {\r\n            isMicroApp = true;\r\n            tool = \"webpack\"\r\n            mainDirName = dirName;\r\n        } else {\r\n            tool = await selectPackTool()\r\n        }\r\n        makeDir();\r\n        reduceFile(tool);\r\n        if (isMicroApp) {\r\n            process.chdir(path.join(process.cwd(), '../'));\r\n            dirName = await inputField();\r\n            makeDir();\r\n            reduceFile(tool);\r\n        }\r\n    } catch(err) {\r\n        process.exit();\r\n    }\r\n    \r\n}\r\n\r\nrun();\r\n\r\n"]}