gridsome-plugin-pug
Version:
Pug plugin for Gridsome.
39 lines (38 loc) • 1.11 kB
JavaScript
/**
* Infuse Pug loaders into `webpack-chain` instance.
*
* @param {Config} config `webpack-chain` instance
* @param {Record<string, any>} pugOptions Options for `pug-plain-loader`
* @param {Record<string, any>} pugLoaderOptions Options for `pug-loader`
*/
function infusePug(config, pugOptions, pugLoaderOptions) {
const pugRule = config.module.rule('pug').test(/\.pug$/);
pugRule.oneOf('pug-vue').resourceQuery(/^\?vue/)
.use('pug-vue')
.loader('pug-plain-loader')
.options(pugOptions);
pugRule.oneOf('pug')
.use('pug')
.loader('pug-loader')
.options(pugLoaderOptions);
}
/**
* Pug plugin for Gridsome.
*
* @exports
* @param {any} api Gridsome API
* @param {Options} options Plugin options
*/
function PugPlugin(api, options) {
const { pug, pugLoader } = options;
api.chainWebpack((config) => infusePug(config, pug, pugLoader));
}
/**
* Default options
*/
PugPlugin.defaultOptions = () => ({
pug: undefined,
pugLoader: undefined
});
module.exports = PugPlugin;
;