const fs = require('fs'); const path = require('path'); const { exec } = require('child_process'); const createDir = (dir) => { if (!fs.existsSync(dir)){ fs.mkdirSync(dir); } } const run = async (cmd, dir) => { return await new Promise((resolve, reject) => { console.log('>>>', `cd '${dir}'`) console.log('>>>', cmd); const r = exec(cmd, { cwd: dir, shell: true }); r.stdout.pipe(process.stdout); r.on('exit', function (code) { if (code == 0) { resolve(); } else { reject(code); } }); }) }; const createProject = async (scope, dir, devDeps) => { createDir(dir); await run(`npm init -y --scope ${scope}`, dir); await run(`npm install --save-dev ${devDeps.join(' ')}`, dir); } const main = async () => { const scope = '@crm'; await createProject(scope, `./app-domain`, ['typescript']); await createDir(path.resolve(`./primary-adapters`)); await createProject(scope, `./primary-adapters/app-domain-tests`, ['typescript', 'jasmine']); await createProject(scope, `./primary-adapters/web`, ['typescript', 'jasmine']); await createDir(path.resolve(`./secondary-adapters`)); await createProject(scope, `./secondary-adapters/http`, ['typescript', 'jasmine']); await createProject(scope, `./secondary-adapters/pouchdb`, ['typescript', 'jasmine']); console.log('finished'); process.exit(0); }; main();
152700cookie-checkCreate Domain Driven typescript modules