Windows 上 通过cygwin 拉取gitlab 私有仓库,因为npm调用git时cygwin目录和系统目录冲突需要修改npm的git.js 位置在全局的node_modules目录,我电脑上的位置是C:\Users\Seven\AppData\Roaming\npm\node_modules\npm\node_modules\pacote\lib\util\git.js
module.exports._exec = execGit
function execGit (gitArgs, gitOpts, opts) {
opts = optCheck(opts)
+ // hack by seven
+ if (gitArgs) {
+ gitArgs = gitArgs.map(gitArg => gitArg.indexOf('C:\\') === -1 ? gitArg : gitArg.replace(/\\/g, '/').replace(/C\:\//i, '/cygdrive/c/'));
+ }
return checkGit().then(gitPath => {
return promiseRetry((retry, number) => {
if (number !== 1) {
opts.log.silly('pacote', 'Retrying git command: ' + gitArgs.join(' ') + ' attempt # ' + number)
}
return execFileAsync(gitPath, gitArgs, mkOpts(gitOpts, opts)).catch((err) => {
if (shouldRetry(err)) {
retry(err)
} else {
throw err
}
})
}, opts.retry)
})
}