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 variables: true
}, },
setting: { setting: {
command: 'npm',
'strict-ssl': true, 'strict-ssl': true,
cafile: false, cafile: false,
NODE_EXTRA_CA_CERTS: false, NODE_EXTRA_CA_CERTS: false,

View File

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

View File

@ -20,6 +20,10 @@
当前未启动 当前未启动
</a-tag> </a-tag>
</a-form-item> </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-form-item label="SSL校验" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-checkbox v-model="config.plugin.node.setting['strict-ssl']"> <a-checkbox v-model="config.plugin.node.setting['strict-ssl']">
关闭strict-ssl 关闭strict-ssl

View File

@ -21,7 +21,7 @@
<!-- </a-form-item>--> <!-- </a-form-item>-->
<a-form-item label="pip命令名" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form-item label="pip命令名" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-input v-model="config.plugin.pip.setting.command"></a-input> <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>
<a-form-item label="仓库镜像" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form-item label="仓库镜像" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-radio-group v-model="config.plugin.pip.setting.registry" @change="onSwitchRegistry" <a-radio-group v-model="config.plugin.pip.setting.registry" @change="onSwitchRegistry"