vue-media-queries icon indicating copy to clipboard operation
vue-media-queries copied to clipboard

nuxt.js integration

Open lukas-pierce opened this issue 6 years ago • 4 comments

require(...) is not defined

lukas-pierce avatar Oct 13 '18 00:10 lukas-pierce

I'm also wondering how to integrate Nuxt.

lifenautjoe avatar Oct 30 '19 10:10 lifenautjoe

@flatanimals 🙏

lifenautjoe avatar Oct 30 '19 10:10 lifenautjoe

Tried this

import Vue from 'vue';
const vmq = require('vue-media-queries');

const mediaQueries = new vmq.MediaQueries({
    bands: vmq.CommonBands.Bulma
});

Vue.use(mediaQueries);

export default function (ctx: any, inject: any) {

    console.log(ctx);

    const bulmaBands = vmq.CommonBands.Bulma;

    const mediaQueries = new vmq.MediaQueries({
        bands: bulmaBands
    });

    if (ctx.app.mixins) {
        ctx.app.mixins.push(bulmaBands);
    } else {
        ctx.app.mixins = [bulmaBands]
    }

    ctx.app.mediaQueries = mediaQueries;
}

Didn't work. Looks like we'll be rolling our own library that works with Nuxt.

Not sure why is it required to pass items to the Vue() constructor, instead of working just with the .use

lifenautjoe avatar Oct 30 '19 10:10 lifenautjoe

figured out a working nuxt integration:

import Vue from 'vue'
import { MediaQueries, CommonBands } from 'vue-media-queries'

const mediaQueries = new MediaQueries({
    bands: CommonBands.Bulma,
})

Vue.use(mediaQueries)

Vue.use({
    install(vue) {
        vue.mixin(CommonBands.Bulma.mixin)
    },
})

export default function (ctx, inject) {
    ctx.app.mediaQueries = mediaQueries
}

The difference is, that you created a new instance mediaQueries and did not use the same you used as a plugin before.

nintra avatar Oct 01 '20 14:10 nintra