成功编译后如何更改 vue-cli 消息 ("App running at...")?
How to change vue-cli message after successfull compile ("App running at...")?
我在我的 dockerized 项目中使用 vue-cli,其中端口映射如下所示:“4180:8080”,编译我的 SPA 后的实际消息如下所示:
App running at:
- Local: http://localhost:8080/app/
It seems you are running Vue CLI inside a container.
Access the dev server via http://localhost:<your container's external mapped port>/app/
应用程序工作正常,我可以按设想通过 http://localhost:4180/app/ 访问,但我无法找到适当的方法来更改上面的消息以显示此 link 而不是 "It seems you are running Vue CLI inside a container..."。我可以使用 webpack 挂钩在消息之前插入 link 但实际上想找到更改消息的方法,由 cli 生成。有可能吗?
而不是更改消息,。
. npm run serve -- --port 4180
这会自动更新您的消息以说明新端口,并且在您为新端口更新 docker 端口转发后,它会再次工作。
我想到了这个问题 - 因为我想用 bash、运行ning 在 Docker 容器中做同样的事情(可能是你已经在做的事情) .
您可以通过从 Docker 容器(假设您的容器是 运行ning 节点)生成子节点进程来调用 Vue CLI 命令来实现此目的。然后,您可以相应地修改 stdout
和 stderr
的输出。
您可以通过以下两种方式之一调用 Javascript 文件:
- 使用 shell 脚本(例如 bash)调用节点和 运行 这个脚本
- 设置 Docker 文件的入口点以使用此脚本(假设默认情况下您是 运行ning 节点)
// index.js
const { spawn } = require('child_process')
const replacePort = string => {
return string.replace(`<your container's external mapped port>`, 8000)
}
const vueCLI = (appLocation, args) => {
return new Promise((resolve, reject) => {
const vue = spawn('vue', args, {cwd: appLocation})
vue.stdout.on('data', (data) => {
console.log(replacePort(data.toString('utf8', 0, data.length)))
})
vue.stderr.on('data', (error) => {
console.log(replacePort(error.toString('utf8', 0, error.length)))
})
vue.on('close', (exitCode) => {
if (exitCode === 0) {
resolve()
} else {
reject(new Error('Vue CLI exited with a non-zero exit code'))
}
})
})
}
vueCLI('path/to/app', CLI_Options).then(() => resolve()).catch(error => console.error(error))
这种做法确实有缺点,不仅限于:
- 性能变慢 - 由于效率较低
- 内存泄漏的潜在危险,视实施情况而定
- 僵尸的风险,如果父进程死亡
由于上述原因和其他几个原因,这条路线被发现不适合我的具体情况。
我在我的 dockerized 项目中使用 vue-cli,其中端口映射如下所示:“4180:8080”,编译我的 SPA 后的实际消息如下所示:
App running at:
- Local: http://localhost:8080/app/
It seems you are running Vue CLI inside a container.
Access the dev server via http://localhost:<your container's external mapped port>/app/
应用程序工作正常,我可以按设想通过 http://localhost:4180/app/ 访问,但我无法找到适当的方法来更改上面的消息以显示此 link 而不是 "It seems you are running Vue CLI inside a container..."。我可以使用 webpack 挂钩在消息之前插入 link 但实际上想找到更改消息的方法,由 cli 生成。有可能吗?
而不是更改消息,
. npm run serve -- --port 4180
这会自动更新您的消息以说明新端口,并且在您为新端口更新 docker 端口转发后,它会再次工作。
我想到了这个问题 - 因为我想用 bash、运行ning 在 Docker 容器中做同样的事情(可能是你已经在做的事情) .
您可以通过从 Docker 容器(假设您的容器是 运行ning 节点)生成子节点进程来调用 Vue CLI 命令来实现此目的。然后,您可以相应地修改 stdout
和 stderr
的输出。
您可以通过以下两种方式之一调用 Javascript 文件:
- 使用 shell 脚本(例如 bash)调用节点和 运行 这个脚本
- 设置 Docker 文件的入口点以使用此脚本(假设默认情况下您是 运行ning 节点)
// index.js
const { spawn } = require('child_process')
const replacePort = string => {
return string.replace(`<your container's external mapped port>`, 8000)
}
const vueCLI = (appLocation, args) => {
return new Promise((resolve, reject) => {
const vue = spawn('vue', args, {cwd: appLocation})
vue.stdout.on('data', (data) => {
console.log(replacePort(data.toString('utf8', 0, data.length)))
})
vue.stderr.on('data', (error) => {
console.log(replacePort(error.toString('utf8', 0, error.length)))
})
vue.on('close', (exitCode) => {
if (exitCode === 0) {
resolve()
} else {
reject(new Error('Vue CLI exited with a non-zero exit code'))
}
})
})
}
vueCLI('path/to/app', CLI_Options).then(() => resolve()).catch(error => console.error(error))
这种做法确实有缺点,不仅限于:
- 性能变慢 - 由于效率较低
- 内存泄漏的潜在危险,视实施情况而定
- 僵尸的风险,如果父进程死亡
由于上述原因和其他几个原因,这条路线被发现不适合我的具体情况。