mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-01-24 02:00:25 +08:00
74 lines
2.4 KiB
TypeScript
74 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() {
|
||
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();
|