anchundan
Version:
109 lines (100 loc) • 2.87 kB
JavaScript
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));