You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ant-design-vue/docs/vue/use-with-vue-cli.en-US.md

4.6 KiB

Use in vue-cli 3

vue-cli is one of the best Vue application development tools. We are going to use antd within it and modify the webpack config for some customized needs.

Install and Initialization

We need to install vue-cli first, you may need install yarn too.

$ npm install -g @vue/cli
# OR
$ yarn global add @vue/cli

Create a new project named antd-demo.

$ vue create antd-demo

And, setup your vue project configuration.

The tool will create and initialize environment and dependencies automatically, please try config your proxy setting or use another npm registry if any network errors happen during it.

Then we go inside antd-demo and start it.

$ cd antd-demo
$ npm run serve

Open the browser at http://localhost:8080/. It renders a header saying "Welcome to Your Vue.js App" on the page.

Import antd

Below is the default directory structure.

├── README.md
├── babel.config
├── package.json
├── public
│   ├── favicon.ico
│   └── index.html
├── src
│   ├── assets
│   │   └── logo.png
│   ├── components
│   │   └── HelloWorld.vue
│   ├── App.vue
│   └── main.js
└── yarn.lock

Now we install ant-design-vue from yarn or npm.

$ yarn add ant-design-vue

Modify src/main.js, import Button component from antd.

import Vue from "vue";
import Button from "ant-design-vue/lib/button";
import "ant-design-vue/dist/antd.css";
import App from "./App";

Vue.component(Button.name, Button);

Vue.config.productionTip = false;

/* eslint-disable no-new */
new Vue({
  el: "#app",
  components: { App },
  template: "<App/>"
});

Modify src/App.vue

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <a-button type="primary">Button></a-button>
    <router-view/>
  </div>
</template>
...

Ok, you should now see a blue primary button displayed on the page. Next you can choose any components of antd to develop your application. Visit other workflows of vue-cli at its User Guide .

Advanced Guides

We are successfully running antd components now but in the real world, there are still lots of problems about antd-demo. For instance, we actually import all styles of components in the project which may be a network performance issue.

Now we need to customize the default webpack config.

Use babel-plugin-import

babel-plugin-import is a babel plugin for importing components on demand (How does it work?).

$ yarn add babel-plugin-import --dev

if you use vue-cli 2

Modify .babelrc.

  {
    "presets": [
      ["env", {
        "modules": false,
        "targets": {
          "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
        }
      }],
      "stage-2"
    ],
-   "plugins": ["transform-vue-jsx", "transform-runtime"]
+   "plugins": [
+     "transform-vue-jsx",
+     "transform-runtime",
+     ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es", "style": "css" }]
+   ]
  }

if you use vue-cli 3

Modify babel.config.js

 module.exports = {
  presets: ["@vue/app"],
+ plugins: [
+    [
+      "import",
+      { libraryName: "ant-design-vue", libraryDirectory: "es", style: true }
+    ]
+  ]
};

Remove the import 'ant-design-vue/dist/antd.css'; statement added before because babel-plugin-import will import styles and import components like below:

  // src/main.js
  import Vue from 'vue'
- import Button from 'ant-design-vue/lib/button';
+ import { Button } from 'ant-design-vue';
- import 'ant-design-vue/dist/antd.css'
  import App from './App'

  Vue.component(Button.name, Button)

  Vue.config.productionTip = false

  /* eslint-disable no-new */
  new Vue({
    el: '#app',
    components: { App },
    template: '<App/>'
  })

Then reboot with npm run dev and visit the demo page, you should not find any warning messages in the console, which prove that the import on demand config is working now. You will find more info about it in this guide.

Customize Theme

According to the Customize Theme documentation, to customize the theme, we need to modify less variables with tools such as less-loader.