feature: npm命令可配置化。 (#322)

pull/325/head
王良 2024-07-08 17:54:36 +08:00 committed by GitHub
parent 5e6e7b288b
commit face64bfd2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 34 additions and 23 deletions

View File

@ -6,6 +6,7 @@ module.exports = {
variables: true
},
setting: {
command: 'npm',
'strict-ssl': true,
cafile: false,
NODE_EXTRA_CA_CERTS: false,

View File

@ -29,7 +29,9 @@ const NodePlugin = function (context) {
nodeApi.setVariables()
},
async getNpmEnv () {
const ret = await shell.exec(['npm config list --json'], { type: 'cmd' })
const command = config.get().plugin.node.setting.command || 'npm'
const ret = await shell.exec([`${command} config list --json`], { type: 'cmd' })
if (ret != null) {
const json = ret.substring(ret.indexOf('{'))
return jsonApi.parse(json)
@ -38,25 +40,27 @@ const NodePlugin = function (context) {
},
async setNpmEnv (list) {
const command = config.get().plugin.node.setting.command || 'npm'
const cmds = []
for (const item of list) {
if (item.value != null) {
cmds.push(`npm config set ${item.key} ${item.value}`)
cmds.push(`${command} config set ${item.key} ${item.value}`)
} else {
cmds.push(`npm config delete ${item.key}`)
cmds.push(`${command} config delete ${item.key}`)
}
}
const ret = await shell.exec(cmds, { type: 'cmd' })
return ret
return await shell.exec(cmds, { type: 'cmd' })
},
async unsetNpmEnv (list) {
const command = config.get().plugin.node.setting.command || 'npm'
const cmds = []
for (const item of list) {
cmds.push(`npm config delete ${item} `)
cmds.push(`${command} config delete ${item} `)
}
const ret = await shell.exec(cmds, { type: 'cmd' })
return ret
return await shell.exec(cmds, { type: 'cmd' })
},
async setYarnEnv (list) {
@ -69,8 +73,7 @@ const NodePlugin = function (context) {
cmds.push(`yarn config delete ${item.key}`)
}
}
const ret = await shell.exec(cmds, { type: 'cmd' })
return ret
return await shell.exec(cmds, { type: 'cmd' })
},
async unsetYarnEnv (list) {
@ -78,8 +81,7 @@ const NodePlugin = function (context) {
for (const item of list) {
cmds.push(`yarn config delete ${item} `)
}
const ret = await shell.exec(cmds, { type: 'cmd' })
return ret
return await shell.exec(cmds, { type: 'cmd' })
},
async getVariables () {
@ -119,9 +121,11 @@ const NodePlugin = function (context) {
},
async setProxy (ip, port) {
const command = config.get().plugin.node.setting.command || 'npm'
const cmds = [
`npm config set proxy=http://${ip}:${port}`,
`npm config set https-proxy=http://${ip}:${port}`
`${command} config set proxy=http://${ip}:${port}`,
`${command} config set https-proxy=http://${ip}:${port}`
]
const env = []
@ -135,19 +139,19 @@ const NodePlugin = function (context) {
const nodeConfig = config.get().plugin.node
const rootCaCertFile = config.get().server.setting.rootCaFile.certPath
if (nodeConfig.setting['strict-ssl']) {
cmds.push('npm config set strict-ssl false')
cmds.push(`${command} config set strict-ssl false`)
}
if (nodeConfig.setting.cafile) {
cmds.push(`npm config set cafile "${rootCaCertFile}"`)
cmds.push(`${command} config set cafile "${rootCaCertFile}"`)
}
if (nodeConfig.setting.NODE_EXTRA_CA_CERTS) {
cmds.push(`npm config set NODE_EXTRA_CA_CERTS "${rootCaCertFile}"`)
cmds.push(`${command} config set NODE_EXTRA_CA_CERTS "${rootCaCertFile}"`)
env.push({ key: 'NODE_EXTRA_CA_CERTS', value: rootCaCertFile })
}
if (nodeConfig.setting.NODE_TLS_REJECT_UNAUTHORIZED) {
cmds.push('npm config set NODE_TLS_REJECT_UNAUTHORIZED 0')
cmds.push(`${command} config set NODE_TLS_REJECT_UNAUTHORIZED 0`)
env.push({ key: 'NODE_TLS_REJECT_UNAUTHORIZED', value: '0' })
}
@ -162,11 +166,13 @@ const NodePlugin = function (context) {
},
async unsetProxy () {
const command = config.get().plugin.node.setting.command || 'npm'
const cmds = [
'npm config delete proxy',
'npm config delete https-proxy',
'npm config delete NODE_EXTRA_CA_CERTS',
'npm config delete strict-ssl'
`${command} config delete proxy`,
`${command} config delete https-proxy`,
`${command} config delete NODE_EXTRA_CA_CERTS`,
`${command} config delete strict-ssl`
]
const ret = await shell.exec(cmds, { type: 'cmd' })
event.fire('status', { key: 'plugin.node.enabled', value: false })

View File

@ -20,6 +20,10 @@
当前未启动
</a-tag>
</a-form-item>
<a-form-item label="npm命令名" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-input v-model="config.plugin.node.setting.command"></a-input>
<div class="form-help">如果你的npm命令改成了其他名字或者想设置绿色版npm程序路径可在此处修改</div>
</a-form-item>
<a-form-item label="SSL校验" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-checkbox v-model="config.plugin.node.setting['strict-ssl']">
关闭strict-ssl

View File

@ -21,7 +21,7 @@
<!-- </a-form-item>-->
<a-form-item label="pip命令名" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-input v-model="config.plugin.pip.setting.command"></a-input>
<div class="form-help">如果你的pip命令改成了其他名字如pip3在此处修改</div>
<div class="form-help">如果你的pip命令改成了其他名字如pip3或者想设置绿色版pip程序路径可在此处修改</div>
</a-form-item>
<a-form-item label="仓库镜像" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-radio-group v-model="config.plugin.pip.setting.registry" @change="onSwitchRegistry"