UNPKG

olympus-r-17plugins

Version:

A plugin of Olympus for 17zuoye.

80 lines (76 loc) 2.7 kB
#!/usr/bin/env node const npm = require("npm"); const path = require('path'); const fs = require("fs"); const copy = require("copy"); // 开始拷贝 const scriptPath = process.argv[1]; const cmd = process.argv[2]; if(!cmd) throw new Error("没有提供需要执行的命令"); switch(cmd) { case "init": const appName = process.argv[3]; if(!appName) throw new Error("没有提供项目名称"); init(appName); break; default: throw new Error("没有找到命令:" + cmd); } function init(appName) { const srcDir = path.join(__dirname, "../init/"); const distDir = process.cwd(); // 拷贝所有文件 copy(srcDir + "/**/*", distDir, function(err, files) { if(err) { console.error(err); } else { let paths = [ "./build/release/index.html", "./src/Main.ts", "./package.json" ]; let vars = { appName: appName, appname: appName.toLowerCase() }; // 开始替换 for(let tempPath of paths) { // 替换Main.ts中的变量 let url = path.join(distDir, tempPath); let str = fs.readFileSync(url, "utf8"); // 替换每一个变量 for(let tempKey in vars) { let reg = new RegExp("\\$a\\-\\{" + tempKey + "\\}", "g"); str = str.replace(reg, vars[tempKey]); } // 写回文件 fs.writeFileSync(url, str); } // 生成.gitignore文件 str = '/node_modules/\n/.vscode/\n/egret/bin-debug/\n/egret/bin-release/\n/dist/\n/package-lock.json\n.history'; fs.writeFileSync(path.join(distDir, "./.gitignore"), str); // 生成.vscode/launch.json文件 str = '{\n // 使用 IntelliSense 了解相关属性。 \n // 悬停以查看现有属性的描述。\n // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387\n "version": "0.2.0",\n "configurations": [\n {\n "type": "chrome",\n "request": "attach",\n "name": "Attach to Chrome",\n "port": 9222,\n "webRoot": "${workspaceRoot}"\n },\n {\n "type": "chrome",\n "request": "launch",\n "name": "Launch Chrome against localhost",\n "url": "http://localhost:8080",\n "webRoot": "${workspaceRoot}"\n }\n ]\n}'; fs.mkdirSync(".vscode"); fs.writeFileSync(path.join(distDir, "./.vscode/launch.json"), str); // 安装3个olympus库 npm.load((err, result)=>{ npm.commands.install(distDir, [], ()=>{ // 更新库到可用的最新版本 npm.commands.update([], ()=>{ // 汇报状态 console.log("done."); }); }); }); } }); }