Nuxt.js 全面配置nuxt-config: 持续更新中其他系列★ vue-cli3 全面配置<span id=“top”>目录</span>√ 初始化项目√ 环境变量配置√ 打包分析√ 提供全局 scss 变量√ 按需引入 element-ui√ 配置 hard-source-webpack-plugin√ 去除多余 css√ Brotli 压缩<span id=“init”>☞ 初始化项目</span>npx create-nuxt-app <项目名>或npx create-nuxt-app <项目名>▲ 回顶部<span id=“env”>☞ 环境变量配置</span> 可以配置在客户端和服务端共享的环境变量module.exports = { env: { baseUrl: process.env.BASE_URL || ‘http://localhost:3000’ }} 通过以下两种方式来使用 baseUrl 变量通过 process.env.baseUrl通过 context.baseUrl,请参考context api▲ 回顶部<span id=“analyze”>☞ 打包分析</span> package.json 中添加 analyze 命令"analyze": “nuxt build –analyze” 修改 nuxt.config.jsexport default { build: { analyza: { analyzeMode: ‘static’ } }}▲ 回顶部<span id=“scss”>☞ 提供全局 scss 变量</span>方法一:npm i -S @nuxtjs/style-resourcesnpm i -D sass-loader node-sass 修改 nuxt.config.jsexport default { modules: [ ‘@nuxtjs/style-resources’, ], styleResources: { scss: ‘/assets/scss/variable.scss’ }}方法二:npm i -D nuxt-sass-resources-loader sass-loader node-sass 修改 nuxt.config.jsexport default { modules: [ [’nuxt-sass-resources-loader’, [’/assets/scss/variable.scss’]] ], styleResources: { scss: ‘~/assets/scss/variable.scss’ }}▲ 回顶部<span id=“elementui”>☞ 按需引入 element-ui</span>npm i -D babel-plugin-component// oryarn add -D babel-plugin-component 修改 nuxt.config.jsmodule.exports = { plugins: [’@/plugins/element-ui’], build: { babel: { plugins: [ [ ‘component’, { libraryName: ’element-ui’, styleLibraryName: ’theme-chalk’ } ] ] } },} 修改 plugins/element-ui.jsimport Vue from ‘vue’import { Button, Loading, Notification, Message, MessageBox} from ’element-ui’import lang from ’element-ui/lib/locale/lang/zh-CN’import locale from ’element-ui/lib/locale’// configure languagelocale.use(lang)// setVue.use(Loading.directive)Vue.prototype.$loading = Loading.serviceVue.prototype.$msgbox = MessageBoxVue.prototype.$alert = MessageBox.alertVue.prototype.$confirm = MessageBox.confirmVue.prototype.$prompt = MessageBox.promptVue.prototype.$notify = NotificationVue.prototype.$message = Message// import componentsVue.use(Button);// or// Vue.component(Button.name, Button)▲ 回顶部<span id=“hard”>☞ 配置 hard-source-webpack-plugin</span>npm i -D hard-source-webpack-plugin 修改 nuxt.config.jsmodule.exports = { build: { extractCSS: true, extend(config, ctx) { if (ctx.isDev) { config.plugins.push( new HardSourceWebpackPlugin({ cacheDirectory: ‘.cache/hard-source/[confighash]’ }) ) } } }}▲ 回顶部<span id=“removecss”>☞ 去除多余 css</span>npm i –D glob-all purgecss-webpack-plugin 若安装失败,请先用管理员身份安装以下全局依赖npm install –global windows-build-tools或yarn global add windows-build-tools 修改 nuxt.config.jsconst PurgecssPlugin = require(‘purgecss-webpack-plugin’)const glob = require(‘glob-all’)const path = require(‘path’)const resolve = dir => path.resolve(__dirname, dir);module.exports = { build: { extractCSS: true, extend(config, ctx) { if (!ctx.isDev) { config.plugins.push( new PurgecssPlugin({ paths: glob.sync([ resolve(’./pages//*.vue’), resolve(’./layouts//.vue’), resolve(’./components/**/.vue’) ]), extractors: [ { extractor: class Extractor { static extract(content) { const validSection = content.replace( /<style([\s\S]*?)</style>+/gim, "" ); return validSection.match(/[A-Za-z0-9-_:/]+/g) || []; } }, extensions: [‘vue’] } ], whitelist: [‘html’, ‘body’, ’nuxt-progress’] }) ) } } }}▲ 回顶部<span id=“brotli”>☞ Brotli 压缩</span>npm i shrink-ray-current 若安装失败,请先用管理员身份安装以下全局依赖npm install –global windows-build-tools或yarn global add windows-build-tools 修改 nuxt.config.jsexport default { render: { http2: { push: true }, compressor: shrinkRay() }}▲ 回顶部