Nuxt/examples/plugins-vendor
2016-11-09 23:59:41 +01:00
..
pages Add style to plugins-vendor example 2016-11-08 03:48:18 +01:00
plugins Update plugins-vendor example (now working) 2016-11-08 03:39:57 +01:00
nuxt.config.js Move vendor and filenames in build key and add loaders 2016-11-09 02:35:13 +01:00
package.json Update plugins-vendor example (now working) 2016-11-08 03:39:57 +01:00
README.md Add nuxt-build and nuxt-start, build:false and dev option 2016-11-09 23:59:41 +01:00

Using external modules and plugings with nuxt.js

Configuration: build.vendor

Nuxt.js allows you to add modules inside the vendor.bundle.js file generated to reduce the size of the app bundle. It's really useful when using external modules (like axios for example)

To add a module/file inside the vendor bundle, add the build.vendor key inside nuxt.config.js:

const { join } = require('path')

module.exports = {
  build: {
    vendor: [
      'axios', // node module
      join(__dirname, './js/my-library.js') // custom file
    ]
  }
}

Configuration: plugins

Nuxt.js allows you to define js plugins to be ran before instantiating the root vue.js application

I want to use vue-notifications to validate the data in my inputs, I need to setup the plugin before launching the app.

File plugins/vue-notifications.js:

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

Vue.use(VueNotifications)

Then, I add my file inside the plugins key of nuxt.config.js:

const { join } = require('path')

module.exports = {
  build: {
    vendor: ['vue-notifications']
  },
  plugins: [ join(__dirname, './plugins/vue-notifications') ]
}

I added vue-notifications in the vendor key to make sure that it won't be included in any other build if I call require('vue-notifications') in a component.

Only in browser build

Some plugins might work only in the browser, for this, you can use the process.BROWSER variable to check if the plugin will run from the server or from the client.

Example:

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

if (process.BROWSER) {
  Vue.use(VueNotifications)
}

Demo

npm install
npm start

Go to http://localhost:3000 and navigate trough the pages.