You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.6 KiB
JavaScript

2 years ago
const child_process = require('child_process')
import * as dotenv from 'dotenv'
import * as fs from 'fs'
const NODE_ENV = process.env.NODE_ENV || 'development'
const envFiles = [
`.env.${NODE_ENV}`
]
for (const file of envFiles) {
const envConfig = dotenv.parse(fs.readFileSync(file))
for (const k in envConfig) {
process.env[k] = envConfig[k]
}
}
export default function GvaPositionServer() {
return {
name: 'gva-position-server',
apply: 'serve',
configureServer(server) {
server.middlewares.use((req, res, next) => {
if (req._parsedUrl.pathname === '/gvaPositionCode') {
const path = req._parsedUrl.query && req._parsedUrl.query.split('=')[1]
if (path && path !== 'null') {
if (process.env.VITE_EDITOR === 'webstorm') {
const linePath = path.split(':')[1]
const filePath = path.split(':')[0]
const platform = os()
if (platform === 'win32') {
child_process.exec(`webstorm64.exe --line ${linePath} ${filePath}`)
} else {
child_process.exec(`webstorm64 --line ${linePath} ${filePath}`)
}
} else {
child_process.exec('code -r -g ' + path)
}
}
}
next()
})
}
}
}
function os() {
'use strict'
const os = require('os')
const platform = os.platform()
switch (platform) {
case 'darwin':
return 'MacOSX'
case 'linux':
return 'Linux'
case 'win32':
return 'Windows'
default:
return '无法确定操作系统!'
}
}