Production vs Development
You can check via process.env.NODE_ENV which usually have a value of production or development.
This variable is available at nuxt.config.js as well.
export default { axios: { port: process.env.NODE_ENV == 'production' ? 80 : 3000 }}NOTE: You can load different dotenv based on NODE_ENV
Note that this is a build-time environment variable, not a runtime environment variable.
nuxt:process.env.NODE_ENV == 'development'nuxt build:process.env.NODE_ENV == 'production'nuxt generate:process.env.NODE_ENV == 'production'
Server, Client or Static
You can check for
process.server: Server (SSR)process.client: Client (Browser JavaScript)process.static: When you runnuxt generate. If you want to execute certain code on server (like reading a local file which is not available on the client), you needif (process.static && process.server).
Sadly, process.server/client/static is not available in nuxt.config.js. The way to go around this problem is to use plugins or some config which support function.
You can import specific library (only available for node/server environment. e.g. fs) or read local file / make http request depending on the environment.
if (process.static && process.server) { const fs = require('fs') const data = JSON.parse(fs.readFileSync(`static/data/config.json`, 'utf8'))}else { const { data } = await $axios.get(`/data/config.json`)}You specify specific plugins file to execute on specific environment only, or you can have a generic plugins file which check for process.server/client/static.
Edit nuxt.config.js.
export default { plugins: [ '~/plugins/vue-notification', // both client and server { src: '~/plugins/vue-notification-client', mode: 'client' }, { src: '~/plugins/vue-notification-server', mode: 'server' } ]}There is also a <client-only> tag for template.