@hyext/builder-neorn
Version:
neo react-native builder for hyext
37 lines (36 loc) • 1.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const child_process_1 = require("child_process");
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
function installDep(projectRoot, dependencies) {
// 必须先删除 package-lock.json, 否则:
// 如果 package-lock.json 里指定了不同版本的依赖, 安装 sdk 时会导致 sdk 的依赖被安装到sdk 的文件夹中, 结果是业务代码引用的库跟 sdk 的支持的库不一样
// 比如 package-lock.json 指定了 react@16.0.0
fs_extra_1.default.removeSync(path_1.default.resolve(projectRoot, 'package-lock.json'));
return new Promise((resolve, reject) => {
const installation = child_process_1.spawn('npm', [
'install',
'--prefer-offline',
'--no-save',
'--no-audit',
'--no-fund',
'--production',
...Object.entries(dependencies).map(pair => pair.join('@')),
], {
cwd: projectRoot,
stdio: 'inherit',
shell: process.platform === 'win32',
});
installation.on('close', code => {
if (code === 0) {
resolve();
}
reject(`依赖安装失败, process code: ${code}`);
});
});
}
exports.default = installDep;