Efficient Moment.js integration for Nuxt.js
- Remove unused Moment.js locales using moment-locales-webpack-plugin for much less bundle size.
- Inject
$moment
to the context everywhere.
Install @nuxtjs/moment
to your project:
yarn add --dev @nuxtjs/moment
# OR
npm i --save-dev @nuxtjs/moment
- Add
@nuxtjs/moment
to thebuildModules
section ofnuxt.config.js
export default {
buildModules: [
'@nuxtjs/moment'
]
}
NOTE: If you are using Nuxt older than v2.9 you have to install module as a dependency
(No --dev
or --save-dev
flags) and also use modules
section in nuxt.config.js
instead of buildModules
.
To strip all locales except en
:
export default {
modules: [
'@nuxtjs/moment'
]
}
To strip all locales except en
, fr
and fa
:
export default {
buildModules: [
'@nuxtjs/moment'
],
moment: {
locales: ['fa']
}
}
Note: en
is built into Moment and can’t be removed!
You can set a default locale via the defaultLocale
option. It must be included
int the locales you keep (or 'en'
) and will only work when using the plugin option.
export default {
buildModules: [
'@nuxtjs/moment'
],
moment: {
defaultLocale: 'de'
locales: ['de']
}
}
This module also registers a plugin to include all needed locales as well as injecting moment as $moment
to Vue context. You can disable this behaviour using plugin: false
.
export default {
buildModules: [
'@nuxtjs/moment'
],
moment: {
plugin: false
}
}
Instead of a filter, you can easily use $moment
service from templates (and yes, it is reactive!).
<div v-text="$moment(...)"></div>
<div>{{ $moment(...) }}</div>
- Clone this repository
- Install dependencies using
yarn install
ornpm install
- Start development server using
npm run dev
Thanks Ivan Akulov for making this awesome webpack plugin. 💖
Copyright (c) Nuxt Community