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.
62 lines (59 loc) • 1.95 kB
text/typescript
/**
* @ignore
* @Description nothing
* @author Wang Bo (ralwayne@163.com)
* @date 2020/10/9 6:14 PM
*/
import shell from 'shelljs';
import fs from 'fs';
import path from 'path';
import print from '../print';
import RigConfig from '@/classes/RigConfig';
import {rootLogger} from "ts-jest";
//link开发库
export default async () => {
print.info('rig postinstall start linking dependencies')
try {
if (!fs.existsSync('node_modules')) {
shell.mkdir('node_modules');
}
const rigConfig = RigConfig.createFromCWD();
let rootPath = shell.pwd().stdout;
let devDeps = [];
for (let rigName in rigConfig.dependencies) {
const dep = rigConfig.dependencies[rigName];
console.log(rigConfig);
if (dep.dev) {
//link rig_dev下的库
print.warn(`developing:${dep.name}`);
devDeps.push(dep.name);
//删除现有同名目录或快捷方式
if (fs.existsSync(`node_modules/${dep.name}`)) {
shell.rm('-rf', `node_modules/${dep.name}`);
}
fs.symlinkSync(
path.resolve(rootPath, `./rig_dev/${dep.name}`),
path.resolve(rootPath, `./node_modules/${dep.name}`),
'dir'
);
}
}
//还原被package.json中被标记为*的库
let pkgJson = JSON.parse(fs.readFileSync('package.json').toString());
let dependencies = pkgJson['dependencies'];
for (let rigName in rigConfig.dependencies) {
const dep = rigConfig.dependencies[rigName];
if (dep.dev) {
dependencies[dep.name] = `git+ssh://${dep.source}#${dep.version}`
}
}
pkgJson.dependencies = dependencies;
fs.writeFileSync('package.json', JSON.stringify(pkgJson, null, 2));
print.succeed(`postinstall SUCCEED!`);
if (devDeps.length > 0) {
print.warn(`developing ${devDeps.length} modules: ${devDeps}.Installed in rig_dev/.Already linked.`)
}
} catch (e) {
print.error(e.message);
}
}