mirror of
https://github.com/vbenjs/vben-admin-thin-next.git
synced 2025-01-24 18:40:19 +08:00
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
// Do you need to update the dependencies to prevent package.json from updating the dependencies, and no install after others get the code
|
||
|
||
import path from 'path';
|
||
import fs from 'fs-extra';
|
||
import { isEqual } from 'lodash';
|
||
import { sh } from 'tasksfile';
|
||
import {
|
||
successConsole,
|
||
// errorConsole
|
||
} from '../utils';
|
||
|
||
const resolve = (dir: string) => {
|
||
return path.resolve(process.cwd(), dir);
|
||
};
|
||
|
||
// const reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
|
||
|
||
let NEED_INSTALL = false;
|
||
|
||
export async function runPreserve() {
|
||
// rc.6 fixed
|
||
// const cwdPath = process.cwd();
|
||
// if (reg.test(cwdPath)) {
|
||
// errorConsole(
|
||
// 'Do not include Chinese, Japanese or Korean in the full path of the project directory, please modify the directory name and run again!'
|
||
// );
|
||
// errorConsole('项目目录全路径请勿包含中文、日文、韩文,请修改目录名后再次重新运行!');
|
||
// process.exit(1);
|
||
// }
|
||
|
||
fs.mkdirp(resolve('build/.cache'));
|
||
function checkPkgUpdate() {
|
||
const pkg = require('../../package.json');
|
||
const { dependencies, devDependencies } = pkg;
|
||
const depsFile = resolve('build/.cache/deps.json');
|
||
if (!fs.pathExistsSync(depsFile)) {
|
||
NEED_INSTALL = true;
|
||
return;
|
||
}
|
||
const depsJson = require('../.cache/deps.json');
|
||
|
||
if (!isEqual(depsJson, { dependencies, devDependencies })) {
|
||
NEED_INSTALL = true;
|
||
}
|
||
}
|
||
checkPkgUpdate();
|
||
if (NEED_INSTALL) {
|
||
// no error
|
||
successConsole(
|
||
'A dependency change is detected, and the dependency is being installed to ensure that the dependency is consistent! (Tip: The project will be executed for the first time)!'
|
||
);
|
||
try {
|
||
await sh('npm run bootstrap ', {
|
||
async: true,
|
||
nopipe: true,
|
||
});
|
||
|
||
successConsole('Dependency installation is successful, start running the project!');
|
||
|
||
const pkg = require('../../package.json');
|
||
const { dependencies, devDependencies } = pkg;
|
||
const depsFile = resolve('build/.cache/deps.json');
|
||
const deps = { dependencies, devDependencies };
|
||
if (!fs.pathExistsSync(depsFile)) {
|
||
fs.writeFileSync(depsFile, JSON.stringify(deps));
|
||
} else {
|
||
const depsFile = resolve('build/.cache/deps.json');
|
||
const depsJson = require('../.cache/deps.json');
|
||
if (!isEqual(depsJson, deps)) {
|
||
fs.writeFileSync(depsFile, JSON.stringify(deps));
|
||
}
|
||
}
|
||
} catch (error) {}
|
||
}
|
||
}
|
||
|
||
runPreserve();
|