【Vue 开发实战】实战篇 # 28:如何自定义Webpack和Babel配置

简介: 【Vue 开发实战】实战篇 # 28:如何自定义Webpack和Babel配置

说明

【Vue 开发实战】学习笔记。



解决 less 配置问题

main.js 文件添加配置

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import Antd from "ant-design-vue";
// 需要自定义样式主题,这里使用less
import "ant-design-vue/dist/antd.less";
Vue.config.productionTip = false;
Vue.use(Antd);
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");


75fbcdd987944830b1e9493f4a133da0.png

https://github.com/ant-design/ant-motion/issues/44

这个问题有下面两种方式:第一种是降低less版本,另一个是配置css的 less-loader,我们使用第二种



272833a476a047dfa37d55b46faa2696.png


查看 vuecli 的 官网配置https://cli.vuejs.org/zh/config/#css-loaderoptions


b8480f015678457daaad476658596b45.png


我们新建 vue.config.js 文件,添加下面的配置

module.exports = {
    css: {
        loaderOptions: {
            less: {
                javascriptEnabled: true
            },
        }
    }
}


然后重新启动一下,发现就没有报错了。

dc65f1fddb9e44b9893c66719d404c16.png


我们在 App.vue 组件里添加下面代码

<template>
  <div id="app">
    <a-button>按钮</a-button>
  </div>
</template>
<style lang="less"></style>

502f4fff7be7424ba863a2a4f3a9d84a.png



按需引入 ant-design-vue 组件

我们可以看到全局注册所有组件会很大


c37febe6133c4b2da0754d34cc6f47b3.png

我们可以使用到的时候在引入

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// import Antd from "ant-design-vue";
// // 需要自定义样式主题,这里使用less
// import "ant-design-vue/dist/antd.less";
import Button from "ant-design-vue/lib/button";
import 'ant-design-vue/lib/button/style';
Vue.config.productionTip = false;
// Vue.use(Antd);
Vue.use(Button);
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");


我们可以看到小了很多,但是这样还是很不方便,需要每个都这样去引入单个组件的东西

516e2cf168b247b191183772099a3983.png


如果你使用了 babel,那么可以使用 babel-plugin-import 来进行按需加载。

3a62fe142eaf47168878c091652e8ec1.png


具体可以参考https://1x.antdv.com/docs/vue/introduce-cn/

我们按照文档上的添加babel配置,修改 babel.config.js 配置

module.exports = {
  presets: ["@vue/cli-plugin-babel/preset"],
  "plugins": [
    ["import", { 
      "libraryName": "ant-design-vue",
      "libraryDirectory": "es",
      "style": true // 会加载 less 文件
    }]
  ]
};


安装依赖

npm i babel-plugin-import -D


d337440d00bd4107bcfc62346de27f6b.png


修改 main.js 文件里的引入组件方式

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// import Antd from "ant-design-vue";
// // 需要自定义样式主题,这里使用less
// import "ant-design-vue/dist/antd.less";
// import Button from "ant-design-vue/lib/button";
// import 'ant-design-vue/lib/button/style';
import { Button } from "ant-design-vue";
Vue.config.productionTip = false;
// Vue.use(Antd);
Vue.use(Button);
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");


重启下服务,我们可以看到效果是一样的。


98386378186c4304a329a1ca9ca72d0d.png

目录
相关文章
|
18天前
|
JavaScript 前端开发 开发者
vue3+ts配置跨域报错问题解决:> newpro2@0.1.0 serve > vue-cli-service serve ERROR Invalid options in vue.
【6月更文挑战第3天】在 Vue CLI 项目中遇到 &quot;ERROR Invalid options in vue.config.js: ‘server’ is not allowed&quot; 错误是因为尝试在 `vue.config.js` 中使用不被支持的 `server` 选项。正确配置开发服务器(如代理)应使用 `devServer` 对象,例如设置代理到 `http://xxx.com/`: ```javascript module.exports = { devServer: {
30 1
|
6天前
|
缓存 JavaScript
webpack配置中的3种hash值
webpack配置中的3种hash值
|
12天前
|
缓存 前端开发 JavaScript
Webpack作为模块打包器,为前端项目提供了高度灵活和可配置的构建流程
【6月更文挑战第12天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。这些方法能提升构建速度,提高开发效率。
30 3
|
12天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
26 2
|
12天前
|
JavaScript 前端开发 API
【vue实战项目】通用管理系统:学生列表
【vue实战项目】通用管理系统:学生列表
40 2
|
12天前
|
缓存 JavaScript
【vue实战项目】通用管理系统:首页
【vue实战项目】通用管理系统:首页
17 2
|
13天前
|
JavaScript
Vue.js中使用作用域插槽实现自定义表格组件
Vue.js中使用作用域插槽实现自定义表格组件
|
17天前
|
前端开发 JavaScript Shell
Webpack 开发快速入门
Webpack 开发快速入门
9 2
|
18天前
|
JavaScript
|
1月前
|
JavaScript 数据可视化 UED
用Vue搭建一个大屏数据可视化页面实战二(Vue实战系列)
用Vue搭建一个大屏数据可视化页面实战二(Vue实战系列)