我正在像下面这样的nuxt.render中间件以编程方式在express中使用nuxt
const { Nuxt, Builder } = require('nuxt')
const app = require('express')()
const api = require('../api')
app.use('/api', api)`
let config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')
// Init Nuxt.js
const nuxt = new Nuxt(config)
app.use(nuxt.render)
async function start() {
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
}
// Listen the server
app.listen(port, host)
console.log('Server listening on ' + host + ':' + port)
}
start()
当我开发服务器api路由并对服务器端api文件进行一些更改并重新启动服务器时,整个nuxt项目每次都会构建,这会花费太多时间。这很不方便,因为nuxt文件中没有更改,而api路由文件中只有更改。
因此,构建一次后,我注释掉以下几行:
if (config.dev) {
// const builder = new Builder(nuxt)
// await builder.build()
}
然后我重新启动服务器,该服务器当然不会启动nuxt构建器。但是,现在我无法在浏览器上访问nuxt。服务器api路由有效,但是nuxt页面路由仅显示“ Nuxt loading…”屏幕。
如何在开发模式下使用nuxt应用而不每次都构建它?
答案 0 :(得分:0)
这可能是一个有效的用例,有时人们不希望将两个服务器用于非常小的api / ui对。我还建议使用一种独立模式,该模式可通过nuxt/proxy
工作,并且您可以在进行开发工作时运行它。在分离模式下,您的nuxt可以单独工作,而api也可以单独运行,并且nuxt通过`nuxt / proxy模仿上述设置。通过在nuxt config中添加这样的smth可以很容易地进行设置
modules: [
['@nuxtjs/proxy', { "/api/": { target: 'http://localhost:888/api'} }]
]
在生产中,您可以像以前一样运行。
答案 1 :(得分:0)
您可以使用 build.parallel
、build.cache
和 build.hardSource
。这将大大加快初始构建后的构建时间。
我不推荐这个用于生产版本。这就是我在代码中的方式:
nuxt.config.js
:
const isDev = process.env.NODE_ENV === "development";
module.exports = {
// ...
build: {
parallel: isDev,
cache: isDev,
hardSource: isDev
},
// ...
};
在 package.json
中,我将 NODE_ENV
脚本的 production
设置为 build
:
"scripts": {
"build": "NODE_ENV=production nuxt build"
}
P.S.:您可能还需要为开发版本设置 build.publicPath
。