UNPKG

rigjs

Version:

A multi-repos dev tool based on yarn and git.Rigjs is intended to be the simplest way to develop,share and deliver codes between different developers or different projects.

146 lines (142 loc) 5.41 kB
/** * @ignore * @Description nothing * @author Wang Bo (ralwayne@163.com) * @date 2020/10/9 6:14 PM */ import print from '../print'; import fs from 'fs'; const PACKAGE_RIG_TEMPLATE = `{ // package.rig.json5 — rig configuration // Field reference: see the rig-package / rig-cicd skills. dependencies: { // 'lib-name': { // source: 'git@github.com:org/repo.git', // git ssh url // version: '1.0.0', // git tag (semver) // dev: false // true => clone into rig_dev/ and develop locally // } } } `; export default async () => { try { print.start('init rig...'); //检查当前目录是否存在package.json if (!(fs.existsSync('package.json') && fs.lstatSync('package.json').isFile())) { throw new Error('Please run this in the root directory of project!Must have a validate package.json'); } //检查是否存在package.rig.json5 if (fs.existsSync('package.rig.json5')) { print.info('package.rig.json5 already exists~'); } else { //创建package.rig.json5 — 本地模板,留空 dependencies,无示例库引用 print.info('create package.rig.json5'); fs.writeFileSync('./package.rig.json5', PACKAGE_RIG_TEMPLATE); } //检查是否存在rig_helper.js // if (fs.existsSync(`${process.cwd()}/rig_helper.js`)) { // print.info('rig_helper.js already exists~'); // } else { // print.info('create rig_helper.js'); // const resRigHelper = await axios.get('https://gist.githubusercontent.com/FlashHand/f468123502fd7aa87933fd8e39ed6926/raw/6835c8bc56480f1ada64b99040806f1968778912/rig_helper.js'); // const rigHelper = resRigHelper.data; // fs.writeFileSync(`${process.cwd()}/rig_helper.js`, rigHelper); // } // //检查是否存在rig_helper.d.ts // if (fs.existsSync(`${process.cwd()}/rig_helper.d.ts`)) { // print.info('rig_helper.d.ts already exists~'); // } else { // print.info('create rig_helper.d.ts'); // const resRigHelperDts = await axios.get('https://gist.githubusercontent.com/FlashHand/f468123502fd7aa87933fd8e39ed6926/raw/6835c8bc56480f1ada64b99040806f1968778912/rig_helper.d.ts'); // const rigHelperDts = resRigHelperDts.data; // fs.writeFileSync(`${process.cwd()}/rig_helper.d.ts`, rigHelperDts); // } //检查rig_dev是否存在 if (fs.existsSync('./rig_dev') && fs.lstatSync('./rig_dev').isDirectory()) { print.info('folder rig_dev already exists~'); } else { print.info('create folder rig_dev'); fs.mkdirSync('rig_dev'); fs.writeFileSync('rig_dev/.gitkeep', '') } //检查rig_dev是否存在 if (fs.existsSync('./rig_indies') && fs.lstatSync('./rig_indies').isDirectory()) { print.info('folder rig_indies already exists~'); } else { print.info('create folder rig_indies'); fs.mkdirSync('rig_indies'); fs.writeFileSync('rig_indies/.gitkeep', '') } //填充gitignore let rigIgnoreStrArr = [ 'rigs/*', 'rig_dev/*', '.env.rig', '!rigs/.gitkeep', '!rig_dev/.gitkeep' ]; let gitignoreStr = '' if (fs.existsSync('.gitignore')) { gitignoreStr = fs.readFileSync('.gitignore').toString(); } for (let i of rigIgnoreStrArr) { if (gitignoreStr.indexOf(i) > -1) { print.info(`${i} already in .gitignore`); } else { print.info(`append ${i} to .gitignore`); gitignoreStr += '\n' + i; } } fs.writeFileSync('.gitignore', gitignoreStr); //modify package.json let pkgJSONStr = fs.readFileSync('./package.json').toString(); let pkgJSON = JSON.parse(pkgJSONStr); let inserted = { private: true, workspaces: [ "rigs/*", "rig_dev/*" ], scripts: { preinstall: "rig preinstall", postinstall: "rig postinstall", }, devDependencies: { json5: '2.2.1' } } pkgJSON.private = inserted.private; //初始化workspaces if (pkgJSON.workspaces && pkgJSON.workspaces instanceof Array) { if (pkgJSON.workspaces.indexOf('rig_dev/*') === -1) { pkgJSON.workspaces.push('rig_dev/*') } } else { pkgJSON.workspaces = inserted.workspaces } //初始化pre/post-install if (pkgJSON.scripts && pkgJSON.scripts instanceof Object) { if (pkgJSON.scripts.preinstall && pkgJSON.scripts.preinstall.indexOf(inserted.scripts.preinstall) < 0) { pkgJSON.scripts.preinstall = `${pkgJSON.scripts.preinstall} && ${inserted.scripts.preinstall}` } else { pkgJSON.scripts.preinstall = inserted.scripts.preinstall; } if (pkgJSON.scripts.postinstall && pkgJSON.scripts.postinstall.indexOf(inserted.scripts.postinstall) < 0) { pkgJSON.scripts.postinstall = `${pkgJSON.scripts.postinstall} && ${inserted.scripts.postinstall}` } else { pkgJSON.scripts.postinstall = inserted.scripts.postinstall; } } else { pkgJSON.scripts = inserted.scripts } if (pkgJSON.devDependencies) { pkgJSON.devDependencies.json5 = inserted.devDependencies.json5; } else { pkgJSON.devDependencies = inserted.devDependencies; } fs.writeFileSync('package.json', JSON.stringify(pkgJSON, null, 2)); print.succeed('rig init succeed'); } catch (e) { print.error(e.message); } };