【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

目录
相关文章
|
1月前
|
JavaScript
在Vue中,如何编写自定义的验证规则?
在Vue中,如何编写自定义的验证规则?
22 1
QGS
|
3月前
|
资源调度 JavaScript 前端开发
手拉手Vue3生命周期实战应用
手拉手Vue3生命周期实战应用
QGS
46 0
|
3月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
37 3
|
3月前
vue3-admin-element-template配置正向代理报错
vue3-admin-element-template配置正向代理报错
34 0
|
3月前
|
移动开发 JavaScript 安全
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
38 0
|
1月前
vue3配置路由报错Catch all routes (“*“) must now be defined using a param with a custom regexp.
vue3配置路由报错Catch all routes (“*“) must now be defined using a param with a custom regexp.
44 0
|
5天前
|
JavaScript 前端开发
ant design vue 配置菜单外部打开
ant design vue 配置菜单外部打开
14 0
|
8天前
|
JavaScript
vue3+vite项目配置ESlint
vue3+vite项目配置ESlint
12 0
|
8天前
|
缓存 JavaScript 前端开发
vue项目实战:实战技巧总结(中)
vue项目实战:实战技巧总结
55 1
|
1月前
|
JavaScript 前端开发
【vue2中引入阿里第三方图标库使用自定义的Ant Design Vue组件a-cascader级联选择后缀图标】
【vue2中引入阿里第三方图标库使用自定义的Ant Design Vue组件a-cascader级联选择后缀图标】
34 0