UNPKG

anchundan

Version:
109 lines (100 loc) 2.87 kB
#!/usr/bin/env node const path = require('path'); const fs = require('fs'); const commandPath = process.cwd(); const package = require(path.join(commandPath,'package.json')); const args = process.argv; let ispm2 = false; let envs = ['dev','uat','pro']; args.forEach(cmd=>{ if(cmd == '--pm2') ispm2 = true; if(cmd.indexOf('--env')>=0){ envs=cmd.split(':')[1].split(','); } }); package.scripts = package.scripts || {}; if(ispm2){ // package.scripts.start = "pm2 start application.dev.config.js"; // package.scripts.start_prod = "pm2 start application.pro.config.js"; // package.scripts.start_uat = "pm2 start application.uat.config.js"; envs.forEach(env=>{ package.scripts['start_'+env]='pm2 start application.'+env+'.config.js'; }); } const makeAppConfig =(env)=>{ return ` module.exports = { apps:[ { "name":"application_pro", "script": "src/index.js", "instances" : 1, "exec_mode" : "cluster", "watch":true, "args":["${env}"], "env": { "NODE_ENV": "${env}" }, "env_production": { "NODE_ENV": "${env}" }, } ] } `; }; const storeConfig=(env)=>{ if(ispm2) { let configpath = path.join(commandPath,`application.${env}.config.js`); if(!fs.existsSync(configpath)){ let conf = makeAppConfig(env); fs.writeFileSync(configpath,conf); } } let link = path.join(commandPath,src,`config/config.${env}.js`); if(!fs.existsSync(link)){ fs.writeFileSync(link,fs.readFileSync(path.join(__dirname,'templates/configenv.txt'))); } }; let src = 'src'; let link = path.join(commandPath,src); if(!fs.existsSync(link)){ fs.mkdirSync(link); } //创建routers //创建controllers const makeDir=(name)=>{ let link = path.join(commandPath,src,name); if(!fs.existsSync(link)){ fs.mkdirSync(link); } }; makeDir('app'); makeDir('routers'); makeDir('plugins'); makeDir('modules'); makeDir('middleware'); makeDir('controller'); makeDir('config'); makeDir('static'); makeDir('services'); link = path.join(commandPath,src,'index.js'); if(!fs.existsSync(link)){ fs.writeFileSync(link,` const anchundan = require('anchundan'); let app = anchundan.application; app.startApp(); `); } link = path.join(commandPath,src,'config/config.base.js'); if(!fs.existsSync(link)){ fs.writeFileSync(link,fs.readFileSync(path.join(__dirname,'templates/config.txt'))); } envs.forEach(env=>{ storeConfig(env); }); //storeConfig('dev') //storeConfig('uat') //storeConfig('pro'); fs.writeFileSync(path.join(commandPath,'package.json'),JSON.stringify(package,null,1));