nuxt.config.js文件

2019-04-17  本文已影响0人  A郑家庆

nuxt.config.js文件用于组织Nuxt.js应用的个性化配置,以便覆盖默认配置。

build

Nuxt.js允许你在自动生成的vendor.bundle.js文件中添加一些模块,以减少应用bundle的体积。如果你的应用依赖第三方模块,这个配置项是十分实用的。

css配置

Nuxtjs里配置全局的css文件、模块、库。(每个页面都会被引入,一般用于公共样式)
如果要使用sass就必须要分别安装node-sass和sass-loader。
在nuxt.config.js中,添加要使用的css资源:

module.exports = {
    css: [
        // 直接加载一个Node.js模块
        'bulma',
        // 项目里要用的css文件
        '@/assets/css/main.css',
         // 项目里要用的scss文件
        '@/assets/css/main.scss'
    ]
}

Nuxt.js会自动识别被导入文件的扩展名,之后,webpack会使用对应的预处理器进行处理。前提是你安装了对应的预处理器。

dev属性配置

配置Nuxt.js应用是开发模式还是生产模式。
dev属性的值会被nuxt命令覆盖:

module.exports = {
   dev: (process.env.NODE_ENV) !== 'production'
}

在server.js中:

const {Nuxt, Builder} = require('nuxt')
const app = require('express')()
const port = process.env.PORT || 3000

// 传入配置初始化 Nuxt.js 实例
let config = require('./nuxt.config.js')
const nuxt = new Nuxt(config)
app.use(nuxt.render)

// 在开发模式下进行编译
if (config.dev) {
  new Builder(nuxt).build()
}

// 监听指定端口
app.listen(port, '0.0.0.0')
console.log('服务器运行于 localhost:' + port)

然后可在package.json中添加脚本配置如下:

{
  "scripts": {
    "dev": "node server.js",
    "build": "nuxt build",
    "start": "NODE_ENV=production node server.js"
  }
}

注意:要运行上面的示例,你需要运行npm install --save-dev cross-env 安装 cross-env。 如果你在非 Windows 环境下开发,你可以不用安装 cross-env,这时需要把 start 脚本中的 cross-env 去掉。

环境变量配置

Nuxt.js让你可以配置在客户端和服务端共享的环境变量。
例如(nuxt.config.js):

module.exports = {
     env: {
           baseUrl: process.env.BASE_URL || 'http://localhost:3000'
     }
}

以上配置我们创建一个baseUrl环境变量,如果应用设定了BASE_URL环境变量,那么baseUrl的值等于BASE_URL的值,否则其值为http://localhost:3000
然后,我们可以通过以下两种方式来使用baseUrl变量:
1.通过process.env.baseUrl
2.通过context.baseUrl
举个例子,我们可以利用它来配置axios的自定义实例。
plugins/axios.js:

import axios from 'axios'
export default axios.create({
     baseURL: process.env.baseUrl
})

然后在页面中,我们可以使用import axios from '~plugins/axios'引入axios模块。

generate属性配置

配置Nuxt.js应用生成静态站点的具体方式。
当运行nuxt generate命令或在编码中调用nuxt.generate()时,Nuxt.js会使用generate属性的配置。

head属性配置

借助head属性,Nuxt.js让你可以在nuxt.config.js中配置应用的meta信息。

module.exports = {
  head: {
    titleTemplate: '%s - Nuxt.js',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: 'Meta description' }
    ]
  }
}

想了解head属性的可用配置,可以参考vue-meta配置文档。

modules属性

modules是Nuxt.js扩展,可以扩展它的核心功能并添加无限的集成。

modulesDir属性

用于设置路径解析的模块目录,例如:webpack resolveLoading, nodeExternal和postcss。配置路径为相对路径options.rootDir

plugins属性配置

plugins属性使得你可以轻易地为Nuxt.js配置使用Vue.js插件。
例如(nuxt.config.js):

module.export = {
    plugins: ['~plugins/vue-notifications']
}

然后我们需要创建plugins/vue-notifications.js文件:

import Vue from 'vue'
import VueNotifications from 'vue-notifications'

Vue.use(VueNotifications)

plugins属性配置的所有插件会在Nuxt.js应用初始化之前被加载导入。
每次你需要使用 Vue.use() 时,你需要在 plugins/ 目录下创建相应的插件文件,并在 nuxt.config.js 中的 plugins 配置项中配置插件的路径。

rootDir属性配置

设置Nuxt.js应用的根目录。
该配置项的值会被nuxt命令行指定的路径参数覆盖(例如:nuxt my-app/会将rootDir的值覆盖设置为my-app/目录对应的绝对路径)。

server属性

Nuxt.js允许为应用程序内部nuxt.config.js中定义服务器访问主机和端口。

export defult {
    server: {
        port: 8000,
        host: '0.0.0.0'
    }
}

srcDir属性配置

设置Nuxt.js应用的源码目录

transition属性配置

用于设置页面切换过渡效果的默认属性值。
默认值:

{
   name: 'page',
   mode: 'out-in'
}

例如(nuxt.config.js):

module.exports = {
  transition: 'page'
  // or
  transition: {
    name: 'page',
    mode: 'out-in',
    beforeEnter (el) {
      console.log('Before enter...');
    }
  }
}

transition用于设置页面切换过渡效果。

layoutTransition属性

用于设置布局过渡的默认属性。配置与layout相同
默认:

{
    name: 'layout',
    mode: 'out-in'
}

例如(nuxt.config.js):

export default {
  layoutTransition: 'layout'
  // or
  transition: {
    name: 'layout',
    mode: 'out-in'
  }
}

全局配置示例css:

.layout-enter-active, .layout-leave-active {
  transition: opacity .5s
}
.layout-enter, .layout-leave-active {
  opacity: 0
}
上一篇下一篇

猜你喜欢

热点阅读