Node.js 在为临时环境构建时,如何忽略vue.config.js中的devServer设置?
我正在用Vue构建一个应用程序。我需要Node.js 在为临时环境构建时,如何忽略vue.config.js中的devServer设置?,node.js,vue.js,webpack-dev-server,vue-cli,Node.js,Vue.js,Webpack Dev Server,Vue Cli,我正在用Vue构建一个应用程序。我需要https在本地环境中进行开发和测试。我成功地创建了必要的证书。为了让开发服务器使用它们,我将server.key和server.crt文件复制到项目的根目录中,并将rootCA.pem文件保留在~/.ssh中。我在/etc/hosts中为我的域的alias localhost添加了一个条目,如: 127.0.0.1 example.test 然后,我在项目根目录中编辑了vue.config.js,如下所示: const fs=require('fs'))
https
在本地环境中进行开发和测试。我成功地创建了必要的证书。为了让开发服务器使用它们,我将server.key
和server.crt
文件复制到项目的根目录中,并将rootCA.pem
文件保留在~/.ssh
中。我在/etc/hosts
中为我的域的alias localhost添加了一个条目,如:
127.0.0.1 example.test
然后,我在项目根目录中编辑了vue.config.js
,如下所示:
const fs=require('fs'))
module.exports={
开发服务器:{
主机:“example.test”,
https:{
key:fs.readFileSync('./server.key'),
证书:fs.readFileSync('./server.crt'),
ca:fs.readFileSync(process.env.HOME+'/.ssh/rootCA.pem')
}
}
}
这在本地非常有效。我的问题在我的暂存服务器上
我的登台服务器正在运行ubuntu(16.04),并使用certbot
(LetsEncrypt)安装了一个实际的SSL证书(即非自签名)。我的项目是一个静态前端,因此我使用配置为指向/dist
目录的nginx
为其提供服务,并使项目在staging.example.com
上可用。在我在上面的vue.config.js
中添加devServer
config之前,一切都很正常
我期望发生的事情:
当我为登台构建项目时,即
npm run build -- --mode staging
我希望它忽略devServer
config部分,因为NODE\u ENV===“production”
(在我的.ENV.staging
文件中设置)
实际发生的情况:
构建过程失败,抱怨:
Error loading vue.config.js:
Error: ENOENT: no such file or directory, open './server.key'
问题:在为“暂存”或“生产”生成时,如何使生成过程忽略
vue.config.js
的devServer
部分?vue.config.js
不会自动检测环境。作为:
如果需要基于环境的条件行为,或者希望直接改变配置,请使用函数(在设置env变量后将对其进行延迟计算)。函数接收解析的配置作为参数。在函数内部,您可以直接修改配置,也可以返回将被合并的对象
我现在还不清楚如何做到这一点。以下是最终奏效的方法:
const fs = require('fs')
module.exports = {
configureWebpack: config => {
if (process.env.NODE_ENV !== 'production') {
config.devServer = {
host: 'qzuku.test',
// https://medium.freecodecamp.org/how-to-get-https-working-on-your-local-development-environment-in-5-minutes-7af615770eec
https: {
key: fs.readFileSync('./qzukuDevServer.key'),
cert: fs.readFileSync('./qzukuDevServer.crt'),
ca: fs.readFileSync(process.env.HOME + '/.ssh/rootDevCA.pem')
}
}
}
}
}
希望这有帮助