forked from daren.hsu/line_push
42 lines
1.8 KiB
JavaScript
42 lines
1.8 KiB
JavaScript
import path from 'path';
|
|
import fs from 'fs';
|
|
export default function setupBuild(options) {
|
|
if (!options.treeShake) {
|
|
this.options.css.push('vuetify/dist/vuetify.css');
|
|
}
|
|
// Enable tree-shaking with VuetifyLoader (https://github.com/vuetifyjs/vuetify-loader)
|
|
if (options.treeShake) {
|
|
const VuetifyLoaderPlugin = this.nuxt.resolver.requireModule('vuetify-loader/lib/plugin');
|
|
this.options.build.transpile.push('vuetify/lib');
|
|
this.extendBuild((config) => {
|
|
config.plugins.push(new VuetifyLoaderPlugin(typeof options.treeShake === 'object' ? options.treeShake.loaderOptions : {}));
|
|
});
|
|
}
|
|
// Remove module options
|
|
const vuetifyOptions = { ...options };
|
|
delete vuetifyOptions.customVariables;
|
|
delete vuetifyOptions.defaultAssets;
|
|
delete vuetifyOptions.optionsPath;
|
|
delete vuetifyOptions.preset;
|
|
delete vuetifyOptions.treeShake;
|
|
let optionsPath = this.nuxt.resolver.resolveAlias(options.optionsPath ||
|
|
path.join(this.options.dir.app || 'app', 'vuetify', 'options.js'));
|
|
optionsPath = fs.existsSync(optionsPath) ? optionsPath : null;
|
|
// Register options template
|
|
this.addTemplate({
|
|
fileName: `vuetify/options.${optionsPath && optionsPath.endsWith('ts') ? 'ts' : 'js'}`,
|
|
src: optionsPath || path.resolve(__dirname, '../templates', 'options.js'),
|
|
options: vuetifyOptions
|
|
});
|
|
// Register plugin
|
|
this.addPlugin({
|
|
fileName: 'vuetify/plugin.js',
|
|
src: path.resolve(__dirname, '../templates', 'plugin.js'),
|
|
options: {
|
|
defaultIconPreset: options.defaultAssets && options.defaultAssets.icons,
|
|
preset: options.preset,
|
|
treeShake: options.treeShake
|
|
}
|
|
});
|
|
}
|
|
//# sourceMappingURL=build.js.map
|