You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.4 KiB
74 lines
2.4 KiB
// 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);
|
|
}
|
|
|
|
await 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();
|
|
|