customize-theme.en-US.e143e3aa.js 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. import{_ as n,a as e,q as a,k as t}from"./index.3fe853a6.js";const o={pageData:{title:"Customize Theme",description:"",frontmatter:{},headers:[{level:2,title:"Ant Design Vue Less variables",slug:"Ant-Design-Vue-Less-variables",content:"We are using [Less](http://lesscss.org/) as the development language for styling. A set of less variables are defined for each design aspect that can be customized to your needs."},{level:2,title:"How to do it",slug:"How-to-do-it",content:"We will use [modifyVars](http://lesscss.org/usage/#using-less-in-the-browser-modify-variables) provided by less.js to override the default values of the variables. We now introduce some popular way to do it depends on different workflow."},{level:3,title:"Customize in webpack",slug:"Customize-in-webpack",content:"We take a typical `webpack.config.js` file as example to customize it's [less-loader](https://github.com/webpack-contrib/less-loader) options."},{level:3,title:"Customize in vue cli 2",slug:"Customize-in-vue-cli-2",content:"Modify the `build/utils.js` file"},{level:3,title:"Customize in vue cli 3",slug:"Customize-in-vue-cli-3",content:"Create a new file `vue.config.js` in the project directory."},{level:3,title:"Customize in less file",slug:"Customize-in-less-file",content:"Another approach to customize theme is creating a `less` file within variables to override `antd.less`."},{level:3,title:"Dynamic theme",slug:"Dynamic-theme",content:"Runtime update theme color please [ref this doc](/docs/react/customize-theme-variable)."},{level:2,title:"How to avoid modifying global styles?",slug:"How-to-avoid-modifying-global-styles",content:"Currently ant-design-vue is designed as a whole experience and modify global styles (eg `body` etc). If you need to integrate ant-design-vue as a part of an existing website, it's likely you want to prevent ant-design-vue to override global styles."},{level:3,title:"Configure webpack to load an alternale less file and scope global styles",slug:"Configure-webpack-to-load-an-alternale-less-file-and-scope-global-styles",content:"It's possible to configure webpack to load an alternate less file:"},{level:3,title:"Use a postcss processor to scope all styles",slug:"Use-a-postcss-processor-to-scope-all-styles",content:"See an example of usage with gulp and [postcss-prefixwrap](https://github.com/dbtedman/postcss-prefixwrap) : https://gist.github.com/sbusch/a90eafaf5a5b61c6d6172da6ff76ddaa"},{level:2,title:"Not working?",slug:"Not-working",content:"You must import styles as less format. A common mistake would be importing multiple copied of styles that some of them are css format to override the less styles."},{level:2,title:"Use dark theme",slug:"Use-dark-theme",content:"Method 1: Import [antd.dark.less](https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.less) in the style file:"},{level:2,title:"Related Articles",slug:"Related-Articles",content:""}],relativePath:"site/src/vueDocs/customize-theme.en-US.md",content:`# Customize Theme
  2. The structure and styles of ant-design-vue are exactly the same as those of Antd. You can refer to the Antd React customization mode for configuration.
  3. Ant Design allows you to customize some basic design aspects in order to meet the needs of UI diversity from business and brand, including primary color, border radius, border color, etc.
  4. ![](https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png)
  5. ## Ant Design Vue Less variables
  6. We are using [Less](http://lesscss.org/) as the development language for styling. A set of less variables are defined for each design aspect that can be customized to your needs.
  7. There are some major variables below, all less variables could be found in [Default Variables](https://github.com/vueComponent/ant-design-vue/blob/main/components/style/themes/default.less).
  8. \`\`\`less
  9. @primary-color: #1890ff; // primary color for all components
  10. @link-color: #1890ff; // link color
  11. @success-color: #52c41a; // success state color
  12. @warning-color: #faad14; // warning state color
  13. @error-color: #f5222d; // error state color
  14. @font-size-base: 14px; // major text font size
  15. @heading-color: rgba(0, 0, 0, 0.85); // heading text color
  16. @text-color: rgba(0, 0, 0, 0.85); // major text color
  17. @text-color-secondary: rgba(0, 0, 0, 0.45); // secondary text color
  18. @disabled-color: rgba(0, 0, 0, 0.25); // disable state color
  19. @border-radius-base: 2px; // major border radius
  20. @border-color-base: #d9d9d9; // major border color
  21. @box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.15); // major shadow for layers
  22. \`\`\`
  23. Please report an issue if the existing list of variables is not enough for you.
  24. ## How to do it
  25. We will use [modifyVars](http://lesscss.org/usage/#using-less-in-the-browser-modify-variables) provided by less.js to override the default values of the variables. We now introduce some popular way to do it depends on different workflow.
  26. ### Customize in webpack
  27. We take a typical \`webpack.config.js\` file as example to customize it's [less-loader](https://github.com/webpack-contrib/less-loader) options.
  28. \`\`\`diff
  29. // webpack.config.js
  30. module.exports = {
  31. rules: [{
  32. test: /\\.less$/,
  33. use: [{
  34. loader: 'style-loader',
  35. }, {
  36. loader: 'css-loader', // translates CSS into CommonJS
  37. }, {
  38. loader: 'less-loader', // compiles Less to CSS
  39. + options: {
  40. + lessOptions: {
  41. + modifyVars: {
  42. + 'primary-color': '#1DA57A',
  43. + 'link-color': '#1DA57A',
  44. + 'border-radius-base': '2px',
  45. + },
  46. + javascriptEnabled: true,
  47. + }
  48. + },
  49. }],
  50. // ...other rules
  51. }],
  52. // ...other config
  53. }
  54. \`\`\`
  55. Note that do not exclude antd package in node_modules when using less-loader.
  56. ### Customize in vue cli 2
  57. Modify the \`build/utils.js\` file
  58. \`\`\`diff
  59. // build/utils.js
  60. - less: generateLoaders('less'),
  61. + less: generateLoaders('less', {
  62. + modifyVars: {
  63. + 'primary-color': '#1DA57A',
  64. + 'link-color': '#1DA57A',
  65. + 'border-radius-base': '2px',
  66. + },
  67. + javascriptEnabled: true,
  68. + }),
  69. \`\`\`
  70. ### Customize in vue cli 3
  71. Create a new file \`vue.config.js\` in the project directory.
  72. \`\`\`js
  73. // vue.config.js for less-loader@6.0.0
  74. module.exports = {
  75. css: {
  76. loaderOptions: {
  77. less: {
  78. lessOptions: {
  79. modifyVars: {
  80. 'primary-color': '#1DA57A',
  81. 'link-color': '#1DA57A',
  82. 'border-radius-base': '2px',
  83. },
  84. javascriptEnabled: true,
  85. },
  86. },
  87. },
  88. },
  89. };
  90. \`\`\`
  91. ### Customize in less file
  92. Another approach to customize theme is creating a \`less\` file within variables to override \`antd.less\`.
  93. \`\`\`css
  94. @import '~ant-design-vue/dist/antd.less'; // Import Ant Design Vue styles by less entry
  95. @import 'your-theme-file.less'; // variables to override above
  96. \`\`\`
  97. Note: This way will load the styles of all components, regardless of your demand, which cause \`style\` option of \`babel-plugin-import\` not working.
  98. ### Dynamic theme
  99. Runtime update theme color please [ref this doc](/docs/react/customize-theme-variable).
  100. ## How to avoid modifying global styles?
  101. Currently ant-design-vue is designed as a whole experience and modify global styles (eg \`body\` etc). If you need to integrate ant-design-vue as a part of an existing website, it's likely you want to prevent ant-design-vue to override global styles.
  102. While there's no canonical way to do it, you can take one of the following paths :
  103. ### Configure webpack to load an alternale less file and scope global styles
  104. It's possible to configure webpack to load an alternate less file:
  105. \`\`\`js
  106. new webpack.NormalModuleReplacementPlugin( /node_modules\\/ant-design-vue\\/lib\\/style\\/index\\.less/, path.resolve(rootDir, 'src/myStylesReplacement.less') )
  107. #antd { @import '~ant-design-vue/lib/style/core/index.less'; @import '~ant-design-vue/lib/style/themes/default.less'; }
  108. \`\`\`
  109. Where the src/myStylesReplacement.less file loads the same files as the index.less file, but loads them within the scope of a top-level selector : the result is that all of the "global" styles are being applied with the #antd scope.
  110. ### Use a postcss processor to scope all styles
  111. See an example of usage with gulp and [postcss-prefixwrap](https://github.com/dbtedman/postcss-prefixwrap) : https://gist.github.com/sbusch/a90eafaf5a5b61c6d6172da6ff76ddaa
  112. ## Not working?
  113. You must import styles as less format. A common mistake would be importing multiple copied of styles that some of them are css format to override the less styles.
  114. - If you import styles by specifying the \`style\` option of [babel-plugin-import](https://github.com/ant-design/babel-plugin-import), change it from \`'css'\` to \`true\`, which will import the \`less\` version of antd.
  115. - If you import styles from \`'ant-design-vue/dist/antd.css'\`, change it to \`ant-design-vue/dist/antd.less\`.
  116. ## Use dark theme
  117. Method 1: Import [antd.dark.less](https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.less) in the style file:
  118. \`\`\`less
  119. @import '~ant-design-vue/dist/antd.dark.less'; // Introduce the official dark less style entry file
  120. \`\`\`
  121. If the project does not use Less, you can import [antd.dark.css](https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.css) in the CSS file:
  122. \`\`\`css
  123. @import '~ant-design-vue/dist/antd.dark.css';
  124. \`\`\`
  125. > Note that you don't need to import \`ant-design-vue/dist/antd.less\` or \`ant-design-vue/dist/antd.css\` anymore, please remove it, and remove babel-plugin-import \`style\` config too. You can't enable two or more theme at the same time by this method.
  126. Method 3: using [less-loader](https://github.com/webpack-contrib/less-loader) in \`webpack.config.js\` to introduce as needed:
  127. \`\`\`diff
  128. const { getThemeVariables } = require('ant-design-vue/dist/theme');
  129. // webpack.config.js
  130. module.exports = {
  131. rules: [{
  132. test: /\\.less$/,
  133. use: [{
  134. loader: 'style-loader',
  135. }, {
  136. loader: 'css-loader', // translates CSS into CommonJS
  137. }, {
  138. loader: 'less-loader', // compiles Less to CSS
  139. + options: {
  140. + lessOptions: { // If you are using less-loader@5 please spread the lessOptions to options directly
  141. + modifyVars: getThemeVariables({
  142. + dark: true, // Enable dark mode
  143. + }),
  144. + javascriptEnabled: true,
  145. + },
  146. + },
  147. }],
  148. }],
  149. };
  150. \`\`\`
  151. ## Related Articles
  152. - [How to Customize Ant Design with React & Webpack\u2026 the Missing Guide](https://medium.com/@GeoffMiller/how-to-customize-ant-design-with-react-webpack-the-missing-guide-c6430f2db10f)
  153. - [Theming Ant Design with Sass and Webpack](https://gist.github.com/Kruemelkatze/057f01b8e15216ae707dc7e6c9061ef7)
  154. `,html:`<h1 id="Customize-Theme">Customize Theme <a class="header-anchor" href="#Customize-Theme">
  155. <span aria-hidden="true" class="anchor">#</span>
  156. </a></h1>
  157. <p>The structure and styles of ant-design-vue are exactly the same as those of Antd. You can refer to the Antd React customization mode for configuration.</p>
  158. <p>Ant Design allows you to customize some basic design aspects in order to meet the needs of UI diversity from business and brand, including primary color, border radius, border color, etc.</p>
  159. <p><img src="https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png" alt=""></p>
  160. <h2 id="Ant-Design-Vue-Less-variables">Ant Design Vue Less variables <a class="header-anchor" href="#Ant-Design-Vue-Less-variables">
  161. <span aria-hidden="true" class="anchor">#</span>
  162. </a></h2>
  163. <p>We are using <a href="http://lesscss.org/" target="_blank" rel="noopener noreferrer">Less</a> as the development language for styling. A set of less variables are defined for each design aspect that can be customized to your needs.</p>
  164. <p>There are some major variables below, all less variables could be found in <a href="https://github.com/vueComponent/ant-design-vue/blob/main/components/style/themes/default.less" target="_blank" rel="noopener noreferrer">Default Variables</a>.</p>
  165. <pre class="language-less" v-pre><code><span class="token variable">@primary-color<span class="token punctuation">:</span></span> #1890ff<span class="token punctuation">;</span> <span class="token comment">// primary color for all components</span>
  166. <span class="token variable">@link-color<span class="token punctuation">:</span></span> #1890ff<span class="token punctuation">;</span> <span class="token comment">// link color</span>
  167. <span class="token variable">@success-color<span class="token punctuation">:</span></span> #52c41a<span class="token punctuation">;</span> <span class="token comment">// success state color</span>
  168. <span class="token variable">@warning-color<span class="token punctuation">:</span></span> #faad14<span class="token punctuation">;</span> <span class="token comment">// warning state color</span>
  169. <span class="token variable">@error-color<span class="token punctuation">:</span></span> #f5222d<span class="token punctuation">;</span> <span class="token comment">// error state color</span>
  170. <span class="token variable">@font-size-base<span class="token punctuation">:</span></span> 14px<span class="token punctuation">;</span> <span class="token comment">// major text font size</span>
  171. <span class="token variable">@heading-color<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.85<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// heading text color</span>
  172. <span class="token variable">@text-color<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.85<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// major text color</span>
  173. <span class="token variable">@text-color-secondary<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.45<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// secondary text color</span>
  174. <span class="token variable">@disabled-color<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.25<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// disable state color</span>
  175. <span class="token variable">@border-radius-base<span class="token punctuation">:</span></span> 2px<span class="token punctuation">;</span> <span class="token comment">// major border radius</span>
  176. <span class="token variable">@border-color-base<span class="token punctuation">:</span></span> #d9d9d9<span class="token punctuation">;</span> <span class="token comment">// major border color</span>
  177. <span class="token variable">@box-shadow-base<span class="token punctuation">:</span></span> 0 2px 8px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.15<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// major shadow for layers</span>
  178. </code></pre>
  179. <p>Please report an issue if the existing list of variables is not enough for you.</p>
  180. <h2 id="How-to-do-it">How to do it <a class="header-anchor" href="#How-to-do-it">
  181. <span aria-hidden="true" class="anchor">#</span>
  182. </a></h2>
  183. <p>We will use <a href="http://lesscss.org/usage/#using-less-in-the-browser-modify-variables" target="_blank" rel="noopener noreferrer">modifyVars</a> provided by less.js to override the default values of the variables. We now introduce some popular way to do it depends on different workflow.</p>
  184. <h3 id="Customize-in-webpack">Customize in webpack <a class="header-anchor" href="#Customize-in-webpack">
  185. <span aria-hidden="true" class="anchor">#</span>
  186. </a></h3>
  187. <p>We take a typical <code>webpack.config.js</code> file as example to customize it's <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> options.</p>
  188. <pre class="language-diff" v-pre><code>// webpack.config.js
  189. module.exports = {
  190. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  191. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  192. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  193. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'style-loader',
  194. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  195. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'css-loader', // translates CSS into CommonJS
  196. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  197. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'less-loader', // compiles Less to CSS
  198. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  199. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: {
  200. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  201. </span><span class="token prefix inserted">+</span><span class="token line"> 'primary-color': '#1DA57A',
  202. </span><span class="token prefix inserted">+</span><span class="token line"> 'link-color': '#1DA57A',
  203. </span><span class="token prefix inserted">+</span><span class="token line"> 'border-radius-base': '2px',
  204. </span><span class="token prefix inserted">+</span><span class="token line"> },
  205. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  206. </span><span class="token prefix inserted">+</span><span class="token line"> }
  207. </span><span class="token prefix inserted">+</span><span class="token line"> },
  208. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  209. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other rules
  210. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  211. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other config
  212. </span></span>}
  213. </code></pre>
  214. <p>Note that do not exclude antd package in node_modules when using less-loader.</p>
  215. <h3 id="Customize-in-vue-cli-2">Customize in vue cli 2 <a class="header-anchor" href="#Customize-in-vue-cli-2">
  216. <span aria-hidden="true" class="anchor">#</span>
  217. </a></h3>
  218. <p>Modify the <code>build/utils.js</code> file</p>
  219. <pre class="language-diff" v-pre><code>// build/utils.js
  220. <span class="token deleted-sign deleted"><span class="token prefix deleted">-</span><span class="token line"> less: generateLoaders('less'),
  221. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> less: generateLoaders('less', {
  222. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  223. </span><span class="token prefix inserted">+</span><span class="token line"> 'primary-color': '#1DA57A',
  224. </span><span class="token prefix inserted">+</span><span class="token line"> 'link-color': '#1DA57A',
  225. </span><span class="token prefix inserted">+</span><span class="token line"> 'border-radius-base': '2px',
  226. </span><span class="token prefix inserted">+</span><span class="token line"> },
  227. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  228. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  229. </span></span>
  230. </code></pre>
  231. <h3 id="Customize-in-vue-cli-3">Customize in vue cli 3 <a class="header-anchor" href="#Customize-in-vue-cli-3">
  232. <span aria-hidden="true" class="anchor">#</span>
  233. </a></h3>
  234. <p>Create a new file <code>vue.config.js</code> in the project directory.</p>
  235. <pre class="language-js" v-pre><code><span class="token comment">// vue.config.js for less-loader@6.0.0</span>
  236. module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
  237. <span class="token literal-property property">css</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  238. <span class="token literal-property property">loaderOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  239. <span class="token literal-property property">less</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  240. <span class="token literal-property property">lessOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  241. <span class="token literal-property property">modifyVars</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  242. <span class="token string-property property">'primary-color'</span><span class="token operator">:</span> <span class="token string">'#1DA57A'</span><span class="token punctuation">,</span>
  243. <span class="token string-property property">'link-color'</span><span class="token operator">:</span> <span class="token string">'#1DA57A'</span><span class="token punctuation">,</span>
  244. <span class="token string-property property">'border-radius-base'</span><span class="token operator">:</span> <span class="token string">'2px'</span><span class="token punctuation">,</span>
  245. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  246. <span class="token literal-property property">javascriptEnabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
  247. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  248. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  249. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  250. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  251. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  252. </code></pre>
  253. <h3 id="Customize-in-less-file">Customize in less file <a class="header-anchor" href="#Customize-in-less-file">
  254. <span aria-hidden="true" class="anchor">#</span>
  255. </a></h3>
  256. <p>Another approach to customize theme is creating a <code>less</code> file within variables to override <code>antd.less</code>.</p>
  257. <pre class="language-css" v-pre><code><span class="token atrule"><span class="token rule">@import</span> <span class="token string">'~ant-design-vue/dist/antd.less'</span><span class="token punctuation">;</span></span> // Import Ant Design Vue styles by less entry
  258. <span class="token atrule"><span class="token rule">@import</span> <span class="token string">'your-theme-file.less'</span><span class="token punctuation">;</span></span> // variables to override above
  259. </code></pre>
  260. <p>Note: This way will load the styles of all components, regardless of your demand, which cause <code>style</code> option of <code>babel-plugin-import</code> not working.</p>
  261. <h3 id="Dynamic-theme">Dynamic theme <a class="header-anchor" href="#Dynamic-theme">
  262. <span aria-hidden="true" class="anchor">#</span>
  263. </a></h3>
  264. <p>Runtime update theme color please <a href="/docs/react/customize-theme-variable">ref this doc</a>.</p>
  265. <h2 id="How-to-avoid-modifying-global-styles">How to avoid modifying global styles? <a class="header-anchor" href="#How-to-avoid-modifying-global-styles">
  266. <span aria-hidden="true" class="anchor">#</span>
  267. </a></h2>
  268. <p>Currently ant-design-vue is designed as a whole experience and modify global styles (eg <code>body</code> etc). If you need to integrate ant-design-vue as a part of an existing website, it's likely you want to prevent ant-design-vue to override global styles.</p>
  269. <p>While there's no canonical way to do it, you can take one of the following paths :</p>
  270. <h3 id="Configure-webpack-to-load-an-alternale-less-file-and-scope-global-styles">Configure webpack to load an alternale less file and scope global styles <a class="header-anchor" href="#Configure-webpack-to-load-an-alternale-less-file-and-scope-global-styles">
  271. <span aria-hidden="true" class="anchor">#</span>
  272. </a></h3>
  273. <p>It's possible to configure webpack to load an alternate less file:</p>
  274. <pre class="language-js" v-pre><code><span class="token keyword">new</span> <span class="token class-name">webpack<span class="token punctuation">.</span>NormalModuleReplacementPlugin</span><span class="token punctuation">(</span> <span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">node_modules\\/ant-design-vue\\/lib\\/style\\/index\\.less</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">,</span> path<span class="token punctuation">.</span><span class="token function">resolve</span><span class="token punctuation">(</span>rootDir<span class="token punctuation">,</span> <span class="token string">'src/myStylesReplacement.less'</span><span class="token punctuation">)</span> <span class="token punctuation">)</span>
  275. #antd <span class="token punctuation">{</span> @<span class="token keyword">import</span> <span class="token string">'~ant-design-vue/lib/style/core/index.less'</span><span class="token punctuation">;</span> @<span class="token keyword">import</span> <span class="token string">'~ant-design-vue/lib/style/themes/default.less'</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
  276. </code></pre>
  277. <p>Where the src/myStylesReplacement.less file loads the same files as the index.less file, but loads them within the scope of a top-level selector : the result is that all of the &quot;global&quot; styles are being applied with the #antd scope.</p>
  278. <h3 id="Use-a-postcss-processor-to-scope-all-styles">Use a postcss processor to scope all styles <a class="header-anchor" href="#Use-a-postcss-processor-to-scope-all-styles">
  279. <span aria-hidden="true" class="anchor">#</span>
  280. </a></h3>
  281. <p>See an example of usage with gulp and <a href="https://github.com/dbtedman/postcss-prefixwrap" target="_blank" rel="noopener noreferrer">postcss-prefixwrap</a> : <a href="https://gist.github.com/sbusch/a90eafaf5a5b61c6d6172da6ff76ddaa" target="_blank" rel="noopener noreferrer">https://gist.github.com/sbusch/a90eafaf5a5b61c6d6172da6ff76ddaa</a></p>
  282. <h2 id="Not-working">Not working? <a class="header-anchor" href="#Not-working">
  283. <span aria-hidden="true" class="anchor">#</span>
  284. </a></h2>
  285. <p>You must import styles as less format. A common mistake would be importing multiple copied of styles that some of them are css format to override the less styles.</p>
  286. <ul>
  287. <li>If you import styles by specifying the <code>style</code> option of <a href="https://github.com/ant-design/babel-plugin-import" target="_blank" rel="noopener noreferrer">babel-plugin-import</a>, change it from <code>'css'</code> to <code>true</code>, which will import the <code>less</code> version of antd.</li>
  288. <li>If you import styles from <code>'ant-design-vue/dist/antd.css'</code>, change it to <code>ant-design-vue/dist/antd.less</code>.</li>
  289. </ul>
  290. <h2 id="Use-dark-theme">Use dark theme <a class="header-anchor" href="#Use-dark-theme">
  291. <span aria-hidden="true" class="anchor">#</span>
  292. </a></h2>
  293. <p>Method 1: Import <a href="https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.less" target="_blank" rel="noopener noreferrer">antd.dark.less</a> in the style file:</p>
  294. <pre class="language-less" v-pre><code><span class="token variable">@import</span> <span class="token string">'~ant-design-vue/dist/antd.dark.less'</span><span class="token punctuation">;</span> <span class="token comment">// Introduce the official dark less style entry file</span>
  295. </code></pre>
  296. <p>If the project does not use Less, you can import <a href="https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.css" target="_blank" rel="noopener noreferrer">antd.dark.css</a> in the CSS file:</p>
  297. <pre class="language-css" v-pre><code><span class="token atrule"><span class="token rule">@import</span> <span class="token string">'~ant-design-vue/dist/antd.dark.css'</span><span class="token punctuation">;</span></span>
  298. </code></pre>
  299. <blockquote>
  300. <p>Note that you don't need to import <code>ant-design-vue/dist/antd.less</code> or <code>ant-design-vue/dist/antd.css</code> anymore, please remove it, and remove babel-plugin-import <code>style</code> config too. You can't enable two or more theme at the same time by this method.</p>
  301. </blockquote>
  302. <p>Method 3: using <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> in <code>webpack.config.js</code> to introduce as needed:</p>
  303. <pre class="language-diff" v-pre><code>const { getThemeVariables } = require('ant-design-vue/dist/theme');
  304. // webpack.config.js
  305. module.exports = {
  306. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  307. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  308. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  309. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'style-loader',
  310. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  311. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'css-loader', // translates CSS into CommonJS
  312. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  313. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'less-loader', // compiles Less to CSS
  314. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  315. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: { // If you are using less-loader@5 please spread the lessOptions to options directly
  316. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: getThemeVariables({
  317. </span><span class="token prefix inserted">+</span><span class="token line"> dark: true, // Enable dark mode
  318. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  319. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  320. </span><span class="token prefix inserted">+</span><span class="token line"> },
  321. </span><span class="token prefix inserted">+</span><span class="token line"> },
  322. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  323. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  324. </span></span>};
  325. </code></pre>
  326. <h2 id="Related-Articles">Related Articles <a class="header-anchor" href="#Related-Articles">
  327. <span aria-hidden="true" class="anchor">#</span>
  328. </a></h2>
  329. <ul>
  330. <li><a href="https://medium.com/@GeoffMiller/how-to-customize-ant-design-with-react-webpack-the-missing-guide-c6430f2db10f" target="_blank" rel="noopener noreferrer">How to Customize Ant Design with React &amp; Webpack\u2026 the Missing Guide</a></li>
  331. <li><a href="https://gist.github.com/Kruemelkatze/057f01b8e15216ae707dc7e6c9061ef7" target="_blank" rel="noopener noreferrer">Theming Ant Design with Sass and Webpack</a></li>
  332. </ul>
  333. `,lastUpdated:1748060301808}},p={class:"markdown"};function l(i,s,r,c,d,u){return t(),e("article",p,s[0]||(s[0]=[a(`<h1 id="Customize-Theme">Customize Theme <a class="header-anchor" href="#Customize-Theme"><span aria-hidden="true" class="anchor">#</span></a></h1><p>The structure and styles of ant-design-vue are exactly the same as those of Antd. You can refer to the Antd React customization mode for configuration.</p><p>Ant Design allows you to customize some basic design aspects in order to meet the needs of UI diversity from business and brand, including primary color, border radius, border color, etc.</p><p><img src="https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png" alt=""></p><h2 id="Ant-Design-Vue-Less-variables">Ant Design Vue Less variables <a class="header-anchor" href="#Ant-Design-Vue-Less-variables"><span aria-hidden="true" class="anchor">#</span></a></h2><p>We are using <a href="http://lesscss.org/" target="_blank" rel="noopener noreferrer">Less</a> as the development language for styling. A set of less variables are defined for each design aspect that can be customized to your needs.</p><p>There are some major variables below, all less variables could be found in <a href="https://github.com/vueComponent/ant-design-vue/blob/main/components/style/themes/default.less" target="_blank" rel="noopener noreferrer">Default Variables</a>.</p><pre class="language-less"><code><span class="token variable">@primary-color<span class="token punctuation">:</span></span> #1890ff<span class="token punctuation">;</span> <span class="token comment">// primary color for all components</span>
  334. <span class="token variable">@link-color<span class="token punctuation">:</span></span> #1890ff<span class="token punctuation">;</span> <span class="token comment">// link color</span>
  335. <span class="token variable">@success-color<span class="token punctuation">:</span></span> #52c41a<span class="token punctuation">;</span> <span class="token comment">// success state color</span>
  336. <span class="token variable">@warning-color<span class="token punctuation">:</span></span> #faad14<span class="token punctuation">;</span> <span class="token comment">// warning state color</span>
  337. <span class="token variable">@error-color<span class="token punctuation">:</span></span> #f5222d<span class="token punctuation">;</span> <span class="token comment">// error state color</span>
  338. <span class="token variable">@font-size-base<span class="token punctuation">:</span></span> 14px<span class="token punctuation">;</span> <span class="token comment">// major text font size</span>
  339. <span class="token variable">@heading-color<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.85<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// heading text color</span>
  340. <span class="token variable">@text-color<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.85<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// major text color</span>
  341. <span class="token variable">@text-color-secondary<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.45<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// secondary text color</span>
  342. <span class="token variable">@disabled-color<span class="token punctuation">:</span></span> <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.25<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// disable state color</span>
  343. <span class="token variable">@border-radius-base<span class="token punctuation">:</span></span> 2px<span class="token punctuation">;</span> <span class="token comment">// major border radius</span>
  344. <span class="token variable">@border-color-base<span class="token punctuation">:</span></span> #d9d9d9<span class="token punctuation">;</span> <span class="token comment">// major border color</span>
  345. <span class="token variable">@box-shadow-base<span class="token punctuation">:</span></span> 0 2px 8px <span class="token function">rgba</span><span class="token punctuation">(</span>0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0<span class="token punctuation">,</span> 0.15<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// major shadow for layers</span>
  346. </code></pre><p>Please report an issue if the existing list of variables is not enough for you.</p><h2 id="How-to-do-it">How to do it <a class="header-anchor" href="#How-to-do-it"><span aria-hidden="true" class="anchor">#</span></a></h2><p>We will use <a href="http://lesscss.org/usage/#using-less-in-the-browser-modify-variables" target="_blank" rel="noopener noreferrer">modifyVars</a> provided by less.js to override the default values of the variables. We now introduce some popular way to do it depends on different workflow.</p><h3 id="Customize-in-webpack">Customize in webpack <a class="header-anchor" href="#Customize-in-webpack"><span aria-hidden="true" class="anchor">#</span></a></h3><p>We take a typical <code>webpack.config.js</code> file as example to customize it&#39;s <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> options.</p><pre class="language-diff"><code>// webpack.config.js
  347. module.exports = {
  348. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  349. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  350. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  351. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;style-loader&#39;,
  352. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  353. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;css-loader&#39;, // translates CSS into CommonJS
  354. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  355. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;less-loader&#39;, // compiles Less to CSS
  356. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  357. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: {
  358. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  359. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;primary-color&#39;: &#39;#1DA57A&#39;,
  360. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;link-color&#39;: &#39;#1DA57A&#39;,
  361. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;border-radius-base&#39;: &#39;2px&#39;,
  362. </span><span class="token prefix inserted">+</span><span class="token line"> },
  363. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  364. </span><span class="token prefix inserted">+</span><span class="token line"> }
  365. </span><span class="token prefix inserted">+</span><span class="token line"> },
  366. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  367. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other rules
  368. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  369. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other config
  370. </span></span>}
  371. </code></pre><p>Note that do not exclude antd package in node_modules when using less-loader.</p><h3 id="Customize-in-vue-cli-2">Customize in vue cli 2 <a class="header-anchor" href="#Customize-in-vue-cli-2"><span aria-hidden="true" class="anchor">#</span></a></h3><p>Modify the <code>build/utils.js</code> file</p><pre class="language-diff"><code>// build/utils.js
  372. <span class="token deleted-sign deleted"><span class="token prefix deleted">-</span><span class="token line"> less: generateLoaders(&#39;less&#39;),
  373. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> less: generateLoaders(&#39;less&#39;, {
  374. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  375. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;primary-color&#39;: &#39;#1DA57A&#39;,
  376. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;link-color&#39;: &#39;#1DA57A&#39;,
  377. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;border-radius-base&#39;: &#39;2px&#39;,
  378. </span><span class="token prefix inserted">+</span><span class="token line"> },
  379. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  380. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  381. </span></span>
  382. </code></pre><h3 id="Customize-in-vue-cli-3">Customize in vue cli 3 <a class="header-anchor" href="#Customize-in-vue-cli-3"><span aria-hidden="true" class="anchor">#</span></a></h3><p>Create a new file <code>vue.config.js</code> in the project directory.</p><pre class="language-js"><code><span class="token comment">// vue.config.js for less-loader@6.0.0</span>
  383. module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
  384. <span class="token literal-property property">css</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  385. <span class="token literal-property property">loaderOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  386. <span class="token literal-property property">less</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  387. <span class="token literal-property property">lessOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  388. <span class="token literal-property property">modifyVars</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  389. <span class="token string-property property">&#39;primary-color&#39;</span><span class="token operator">:</span> <span class="token string">&#39;#1DA57A&#39;</span><span class="token punctuation">,</span>
  390. <span class="token string-property property">&#39;link-color&#39;</span><span class="token operator">:</span> <span class="token string">&#39;#1DA57A&#39;</span><span class="token punctuation">,</span>
  391. <span class="token string-property property">&#39;border-radius-base&#39;</span><span class="token operator">:</span> <span class="token string">&#39;2px&#39;</span><span class="token punctuation">,</span>
  392. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  393. <span class="token literal-property property">javascriptEnabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
  394. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  395. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  396. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  397. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  398. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  399. </code></pre><h3 id="Customize-in-less-file">Customize in less file <a class="header-anchor" href="#Customize-in-less-file"><span aria-hidden="true" class="anchor">#</span></a></h3><p>Another approach to customize theme is creating a <code>less</code> file within variables to override <code>antd.less</code>.</p><pre class="language-css"><code><span class="token atrule"><span class="token rule">@import</span> <span class="token string">&#39;~ant-design-vue/dist/antd.less&#39;</span><span class="token punctuation">;</span></span> // Import Ant Design Vue styles by less entry
  400. <span class="token atrule"><span class="token rule">@import</span> <span class="token string">&#39;your-theme-file.less&#39;</span><span class="token punctuation">;</span></span> // variables to override above
  401. </code></pre><p>Note: This way will load the styles of all components, regardless of your demand, which cause <code>style</code> option of <code>babel-plugin-import</code> not working.</p><h3 id="Dynamic-theme">Dynamic theme <a class="header-anchor" href="#Dynamic-theme"><span aria-hidden="true" class="anchor">#</span></a></h3><p>Runtime update theme color please <a href="/docs/react/customize-theme-variable">ref this doc</a>.</p><h2 id="How-to-avoid-modifying-global-styles">How to avoid modifying global styles? <a class="header-anchor" href="#How-to-avoid-modifying-global-styles"><span aria-hidden="true" class="anchor">#</span></a></h2><p>Currently ant-design-vue is designed as a whole experience and modify global styles (eg <code>body</code> etc). If you need to integrate ant-design-vue as a part of an existing website, it&#39;s likely you want to prevent ant-design-vue to override global styles.</p><p>While there&#39;s no canonical way to do it, you can take one of the following paths :</p><h3 id="Configure-webpack-to-load-an-alternale-less-file-and-scope-global-styles">Configure webpack to load an alternale less file and scope global styles <a class="header-anchor" href="#Configure-webpack-to-load-an-alternale-less-file-and-scope-global-styles"><span aria-hidden="true" class="anchor">#</span></a></h3><p>It&#39;s possible to configure webpack to load an alternate less file:</p><pre class="language-js"><code><span class="token keyword">new</span> <span class="token class-name">webpack<span class="token punctuation">.</span>NormalModuleReplacementPlugin</span><span class="token punctuation">(</span> <span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">node_modules\\/ant-design-vue\\/lib\\/style\\/index\\.less</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">,</span> path<span class="token punctuation">.</span><span class="token function">resolve</span><span class="token punctuation">(</span>rootDir<span class="token punctuation">,</span> <span class="token string">&#39;src/myStylesReplacement.less&#39;</span><span class="token punctuation">)</span> <span class="token punctuation">)</span>
  402. #antd <span class="token punctuation">{</span> @<span class="token keyword">import</span> <span class="token string">&#39;~ant-design-vue/lib/style/core/index.less&#39;</span><span class="token punctuation">;</span> @<span class="token keyword">import</span> <span class="token string">&#39;~ant-design-vue/lib/style/themes/default.less&#39;</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
  403. </code></pre><p>Where the src/myStylesReplacement.less file loads the same files as the index.less file, but loads them within the scope of a top-level selector : the result is that all of the &quot;global&quot; styles are being applied with the #antd scope.</p><h3 id="Use-a-postcss-processor-to-scope-all-styles">Use a postcss processor to scope all styles <a class="header-anchor" href="#Use-a-postcss-processor-to-scope-all-styles"><span aria-hidden="true" class="anchor">#</span></a></h3><p>See an example of usage with gulp and <a href="https://github.com/dbtedman/postcss-prefixwrap" target="_blank" rel="noopener noreferrer">postcss-prefixwrap</a> : <a href="https://gist.github.com/sbusch/a90eafaf5a5b61c6d6172da6ff76ddaa" target="_blank" rel="noopener noreferrer">https://gist.github.com/sbusch/a90eafaf5a5b61c6d6172da6ff76ddaa</a></p><h2 id="Not-working">Not working? <a class="header-anchor" href="#Not-working"><span aria-hidden="true" class="anchor">#</span></a></h2><p>You must import styles as less format. A common mistake would be importing multiple copied of styles that some of them are css format to override the less styles.</p><ul><li>If you import styles by specifying the <code>style</code> option of <a href="https://github.com/ant-design/babel-plugin-import" target="_blank" rel="noopener noreferrer">babel-plugin-import</a>, change it from <code>&#39;css&#39;</code> to <code>true</code>, which will import the <code>less</code> version of antd.</li><li>If you import styles from <code>&#39;ant-design-vue/dist/antd.css&#39;</code>, change it to <code>ant-design-vue/dist/antd.less</code>.</li></ul><h2 id="Use-dark-theme">Use dark theme <a class="header-anchor" href="#Use-dark-theme"><span aria-hidden="true" class="anchor">#</span></a></h2><p>Method 1: Import <a href="https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.less" target="_blank" rel="noopener noreferrer">antd.dark.less</a> in the style file:</p><pre class="language-less"><code><span class="token variable">@import</span> <span class="token string">&#39;~ant-design-vue/dist/antd.dark.less&#39;</span><span class="token punctuation">;</span> <span class="token comment">// Introduce the official dark less style entry file</span>
  404. </code></pre><p>If the project does not use Less, you can import <a href="https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.css" target="_blank" rel="noopener noreferrer">antd.dark.css</a> in the CSS file:</p><pre class="language-css"><code><span class="token atrule"><span class="token rule">@import</span> <span class="token string">&#39;~ant-design-vue/dist/antd.dark.css&#39;</span><span class="token punctuation">;</span></span>
  405. </code></pre><blockquote><p>Note that you don&#39;t need to import <code>ant-design-vue/dist/antd.less</code> or <code>ant-design-vue/dist/antd.css</code> anymore, please remove it, and remove babel-plugin-import <code>style</code> config too. You can&#39;t enable two or more theme at the same time by this method.</p></blockquote><p>Method 3: using <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> in <code>webpack.config.js</code> to introduce as needed:</p><pre class="language-diff"><code>const { getThemeVariables } = require(&#39;ant-design-vue/dist/theme&#39;);
  406. // webpack.config.js
  407. module.exports = {
  408. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  409. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  410. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  411. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;style-loader&#39;,
  412. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  413. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;css-loader&#39;, // translates CSS into CommonJS
  414. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  415. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;less-loader&#39;, // compiles Less to CSS
  416. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  417. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: { // If you are using less-loader@5 please spread the lessOptions to options directly
  418. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: getThemeVariables({
  419. </span><span class="token prefix inserted">+</span><span class="token line"> dark: true, // Enable dark mode
  420. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  421. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  422. </span><span class="token prefix inserted">+</span><span class="token line"> },
  423. </span><span class="token prefix inserted">+</span><span class="token line"> },
  424. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  425. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  426. </span></span>};
  427. </code></pre><h2 id="Related-Articles">Related Articles <a class="header-anchor" href="#Related-Articles"><span aria-hidden="true" class="anchor">#</span></a></h2><ul><li><a href="https://medium.com/@GeoffMiller/how-to-customize-ant-design-with-react-webpack-the-missing-guide-c6430f2db10f" target="_blank" rel="noopener noreferrer">How to Customize Ant Design with React &amp; Webpack\u2026 the Missing Guide</a></li><li><a href="https://gist.github.com/Kruemelkatze/057f01b8e15216ae707dc7e6c9061ef7" target="_blank" rel="noopener noreferrer">Theming Ant Design with Sass and Webpack</a></li></ul>`,49)]))}const h=n(o,[["render",l]]);export{h as default};