Skip to content

Commit

Permalink
Nuxt module (#54)
Browse files Browse the repository at this point in the history
Nuxt module

Co-authored-by: Sébastien LeBlanc
Co-authored-by: Oliver Findl
  • Loading branch information
mrleblanc101 authored Jun 28, 2022
1 parent e157f72 commit 9893bb7
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 36 deletions.
22 changes: 7 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,21 +134,13 @@ With [nuxt](https://nuxtjs.org/) - [nuxt.config.js](https://nuxtjs.org/faq/exten
// nuxt

module.exports = {
build: {
extend(config) {
const vueRule = config.module.rules.find(({ test }) => test.toString() === /\.vue$/i.toString());
vueRule.use = [
{
loader: vueRule.loader,
options: vueRule.options
}, {
loader: "vue-svg-inline-loader",
options: { /* ... */ }
}
];
delete vueRule.loader;
delete vueRule.options;
}
buildModules: [
['vue-svg-inline-loader/nuxt', { /* options */ }]
],
// or
buildModules: ['vue-svg-inline-loader/nuxt'],
vueSvgInlineLoader: {
/* options */
}
};
```
Expand Down
29 changes: 8 additions & 21 deletions examples/nuxt/nuxt.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,31 +28,18 @@ export default {
// Modules for dev and build (recommended) (https://go.nuxtjs.dev/config-modules)
buildModules: [
// https://go.nuxtjs.dev/eslint
'@nuxtjs/eslint-module'
'@nuxtjs/eslint-module',
// 'vue-svg-inline-loader/nuxt' // in a real project
join(__dirname, "../../nuxt/index.js") // for this demo
],

vueSvgInlineLoader: {
/* options */
},

// Modules (https://go.nuxtjs.dev/config-modules)
modules: [
// https://go.nuxtjs.dev/pwa
'@nuxtjs/pwa'
],

// Build Configuration (https://go.nuxtjs.dev/config-build)
build: {
extend(config, ctx) {
const vueRule = config.module.rules.find(({ test }) => test.toString() === /\.vue$/i.toString());
vueRule.use = [
{
loader: vueRule.loader,
options: vueRule.options
}, {
// loader: "vue-svg-inline-loader", // in your project
loader: join(__dirname, '../../index.js'),
options: { /* ... */ }
}
];
delete vueRule.loader;
delete vueRule.options;
}
}
]
}
30 changes: 30 additions & 0 deletions nuxt/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const { join } = require("path");

export default function vueSvgInlineLoaderModule(moduleOptions) {
const options = Object.assign(
{},
this.options.vueSvgInlineLoader,
moduleOptions
);

this.extendBuild((config) => {
const vueRule = config.module.rules.find(
({ test }) => test.toString() === /\.vue$/i.toString()
);
if (!vueRule.use) {
vueRule.use = [
{
loader: vueRule.loader,
options: vueRule.options,
},
];
delete vueRule.loader;
delete vueRule.options;
}

vueRule.use.push({
loader: join(__dirname, "../index.js"),
options,
});
});
}

0 comments on commit 9893bb7

Please sign in to comment.