Security News
NVD Backlog Tops 20,000 CVEs Awaiting Analysis as NIST Prepares System Updates
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
vuetify-loader
Advanced tools
The vuetify-loader package is a webpack loader for Vuetify, a popular Vue.js UI library. It provides functionalities to automatically import Vuetify components and styles, optimize the bundle size, and enable tree-shaking for Vuetify components.
Automatic Component Import
This feature allows you to automatically import Vuetify components as you use them in your Vue files, eliminating the need to manually import each component.
module.exports = {
configureWebpack: {
plugins: [
new VuetifyLoaderPlugin()
]
}
};
Tree Shaking
Tree shaking is a feature that allows you to include only the components you actually use in your project, reducing the final bundle size.
module.exports = {
configureWebpack: {
plugins: [
new VuetifyLoaderPlugin({
match (originalTag, { kebabTag, camelTag, path, component }) {
if (kebabTag.startsWith('core-')) {
return [camelTag, `import ${camelTag} from '@/components/core/${camelTag.substring(4)}.vue'`]
}
}
})
]
}
};
Style Imports
This feature automatically imports the necessary styles for the Vuetify components you use, ensuring that your application looks as expected without manual style imports.
module.exports = {
configureWebpack: {
plugins: [
new VuetifyLoaderPlugin({
progressiveImages: true
})
]
}
};
babel-plugin-import is a Babel plugin for importing components on demand. It is commonly used with libraries like Ant Design and Material-UI. Unlike vuetify-loader, which is a webpack plugin, babel-plugin-import works at the Babel level and can be used with various UI libraries.
unplugin-vue-components is a Vite/webpack plugin that automatically imports Vue components as you use them. It supports multiple UI libraries, including Vuetify, and offers similar functionalities to vuetify-loader, such as automatic component import and tree shaking.
vite-plugin-components is a Vite plugin that automatically imports Vue components. It is similar to vuetify-loader but is specifically designed for Vite, offering automatic component import and tree shaking for various UI libraries, including Vuetify.
This package is for Vuetify 2 only, for Vuetify 3 see next
vuetify-loader
will automatically import all Vuetify components as you use them
// webpack.config.js
const { VuetifyLoaderPlugin } = require('vuetify-loader')
exports.plugins.push(
new VuetifyLoaderPlugin()
)
You can also provide a custom match function to import your own project's components too:
// webpack.config.js
const { VuetifyLoaderPlugin } = require('vuetify-loader')
exports.plugins.push(
new VuetifyLoaderPlugin({
/**
* This function will be called for every tag used in each vue component
* It should return an array, the first element will be inserted into the
* components array, the second should be a corresponding import
*
* originalTag - the tag as it was originally used in the template
* kebabTag - the tag normalised to kebab-case
* camelTag - the tag normalised to PascalCase
* path - a relative path to the current .vue file
* component - a parsed representation of the current component
*/
match (originalTag, { kebabTag, camelTag, path, component }) {
if (kebabTag.startsWith('core-')) {
return [camelTag, `import ${camelTag} from '@/components/core/${camelTag.substring(4)}.vue'`]
}
}
})
)
or if you're using Vue CLI:
// vue.config.js
module.exports = {
chainWebpack: config => {
config.plugin('VuetifyLoaderPlugin').tap(args => [{
match (originalTag, { kebabTag, camelTag, path, component }) {
if (kebabTag.startsWith('core-')) {
return [camelTag, `import ${camelTag} from '@/components/core/${camelTag.substring(4)}.vue'`]
}
}
}])
}
}
<template>
<core-form>
<v-card>
...
</v-card>
</core-form>
</template>
<script>
export default {
...
}
</script>
Will be compiled into:
<template>
<core-form>
<v-card>
...
</v-card>
</core-form>
</template>
<script>
import { VCard } from 'vuetify/lib'
import CoreForm from '@/components/core/Form.vue'
export default {
components: {
VCard,
CoreForm
},
...
}
</script>
vuetify-loader
can automatically generate low-res placeholders for the v-img
component
NOTE: You must have ImageMagick, GraphicsMagick, or sharp installed for this to work
Add progressiveImages
to the plugin options:
exports.plugins.push(
new VuetifyLoaderPlugin({
progressiveImages: true
})
)
// vue-cli
module.exports = {
chainWebpack: config => {
config.plugin('VuetifyLoaderPlugin').tap(args => [{
progressiveImages: true
}])
}
}
And away you go!
<v-img src="@/assets/some-image.jpg"></v-img>
NOTE: The src must follow vue-loader's transform rules
progressiveImages
only works on static paths, for use in a loop you have to require
the image yourself:
<v-img v-for="i in 10" :src="require(`@/images/image-${i}.jpg?vuetify-preload`)" :key="i">
progressiveImages: true
can be replaced with an object for advanced configuration
new VuetifyLoaderPlugin({
progressiveImages: {
size: 12, // Use higher-resolution previews
sharp: true // Use sharp instead of ImageMagick
}
})
size
Type: Number
Default: 9
The minimum dimensions of the generated preview images in pixels
resourceQuery
Type: RegExp
Default: /vuetify-preload/
Override the resource qury to match v-img URLs
If you only want some images to have placeholders, add ?lazy
to the end of the request:
<v-img src="@/assets/some-image.jpg?lazy"></v-img>
And modify the regex to match:
new VuetifyLoaderPlugin({
progressiveImages: {
resourceQuery: /lazy\?vuetify-preload/
}
})
sharp
Type: Boolean
Default: false
Use sharp instead of GM for environments without ImageMagick. This will result in lower-quality images
graphicsMagick
Type: Boolean
Default: false
Use GraphicsMagic instead of ImageMagick
registerStylesSSR
Type: Boolean
Default: false
Register Vuetify styles in vue-style-loader.
This fixes styles not being loaded when doing SSR (for example when using @nuxtjs/vuetify). As Vuetify imports styles with JS, without this option, they do not get picked up by SSR.
⚠️ This option requires having manualInject
set to true
in vue-style-loader
config.
FAQs
A Webpack plugin for treeshaking Vuetify components and more
The npm package vuetify-loader receives a total of 133,891 weekly downloads. As such, vuetify-loader popularity was classified as popular.
We found that vuetify-loader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.