customize-theme.zh-CN.fbe9ec6f.js 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. import{_ as s,a,n as e,k as p}from"./index.c1b9962e.js";const t={pageData:{title:"\u5B9A\u5236\u4E3B\u9898",description:"",frontmatter:{},headers:[{level:2,title:"Ant Design Vue \u7684\u6837\u5F0F\u53D8\u91CF",slug:"ant-design-vue-\u7684\u6837\u5F0F\u53D8\u91CF",content:"antd \u7684\u6837\u5F0F\u4F7F\u7528\u4E86 [Less](http://lesscss.org/) \u4F5C\u4E3A\u5F00\u53D1\u8BED\u8A00\uFF0C\u5E76\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u5168\u5C40/\u7EC4\u4EF6\u7684\u6837\u5F0F\u53D8\u91CF\uFF0C\u4F60\u53EF\u4EE5\u6839\u636E\u9700\u6C42\u8FDB\u884C\u76F8\u5E94\u8C03\u6574\u3002"},{level:2,title:"\u5B9A\u5236\u65B9\u5F0F",slug:"\u5B9A\u5236\u65B9\u5F0F",content:"\u6211\u4EEC\u4F7F\u7528 [modifyVars](http://lesscss.org/usage/#using-less-in-the-browser-modify-variables) \u7684\u65B9\u5F0F\u6765\u8FDB\u884C\u8986\u76D6\u53D8\u91CF\u3002\u4E0B\u9762\u5C06\u9488\u5BF9\u4E0D\u540C\u7684\u573A\u666F\u63D0\u4F9B\u4E00\u4E9B\u5E38\u7528\u7684\u5B9A\u5236\u65B9\u5F0F\u3002"},{level:3,title:"\u5728 webpack \u4E2D\u5B9A\u5236\u4E3B\u9898",slug:"\u5728-webpack-\u4E2D\u5B9A\u5236\u4E3B\u9898",content:"\u6211\u4EEC\u4EE5 webpack@4 \u4E3A\u4F8B\u8FDB\u884C\u8BF4\u660E\uFF0C\u4EE5\u4E0B\u662F\u4E00\u4E2A `webpack.config.js` \u7684\u5178\u578B\u4F8B\u5B50\uFF0C\u5BF9 [less-loader](https://github.com/webpack-contrib/less-loader) \u7684 options \u5C5E\u6027\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\u3002"},{level:3,title:"\u5728 vue cli 2 \u4E2D\u5B9A\u5236\u4E3B\u9898",slug:"\u5728-vue-cli-2-\u4E2D\u5B9A\u5236\u4E3B\u9898",content:"\u4FEE\u6539`build/utils.js`\u6587\u4EF6"},{level:3,title:"\u5728 vue cli 3 \u4E2D\u5B9A\u5236\u4E3B\u9898",slug:"\u5728-vue-cli-3-\u4E2D\u5B9A\u5236\u4E3B\u9898",content:"\u9879\u76EE\u6839\u76EE\u5F55\u4E0B\u65B0\u5EFA\u6587\u4EF6`vue.config.js`"},{level:3,title:"\u914D\u7F6E less \u53D8\u91CF\u6587\u4EF6",slug:"\u914D\u7F6E-less-\u53D8\u91CF\u6587\u4EF6",content:"\u53E6\u5916\u4E00\u79CD\u65B9\u5F0F\u662F\u5EFA\u7ACB\u4E00\u4E2A\u5355\u72EC\u7684 `less` \u53D8\u91CF\u6587\u4EF6\uFF0C\u5F15\u5165\u8FD9\u4E2A\u6587\u4EF6\u8986\u76D6 `antd.less` \u91CC\u7684\u53D8\u91CF\u3002"},{level:2,title:"\u6CA1\u6709\u751F\u6548\uFF1F",slug:"\u6CA1\u6709\u751F\u6548\uFF1F",content:"\u6CE8\u610F\u6837\u5F0F\u5FC5\u987B\u52A0\u8F7D less \u683C\u5F0F\uFF0C\u4E00\u4E2A\u5E38\u89C1\u7684\u95EE\u9898\u5C31\u662F\u5F15\u5165\u4E86\u591A\u4EFD\u6837\u5F0F\uFF0Cless \u7684\u6837\u5F0F\u88AB css \u7684\u6837\u5F0F\u8986\u76D6\u4E86\u3002"},{level:2,title:"\u4F7F\u7528\u6697\u9ED1\u4E3B\u9898",slug:"\u4F7F\u7528\u6697\u9ED1\u4E3B\u9898",content:"\u65B9\u5F0F\u4E00\uFF1A\u5728\u6837\u5F0F\u6587\u4EF6\u5168\u91CF\u5F15\u5165 [antd.dark.less](https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.less)\u3002"},{level:2,title:"\u793E\u533A\u6559\u7A0B for Antd React",slug:"\u793E\u533A\u6559\u7A0B-for-antd-react",content:""}],relativePath:"src/vueDocs/customize-theme.zh-CN.md",content:`# \u5B9A\u5236\u4E3B\u9898
  2. ant-design-vue \u7684\u7EC4\u4EF6\u7ED3\u6784\u53CA\u6837\u5F0F\u548C Antd React \u5B8C\u5168\u4E00\u81F4\uFF0C\u4F60\u53EF\u4EE5\u53C2\u8003 Antd React \u7684\u5B9A\u5236\u65B9\u5F0F\u8FDB\u884C\u914D\u7F6E\u3002
  3. Ant Design \u8BBE\u8BA1\u89C4\u8303\u4E0A\u652F\u6301\u4E00\u5B9A\u7A0B\u5EA6\u7684\u6837\u5F0F\u5B9A\u5236\uFF0C\u4EE5\u6EE1\u8DB3\u4E1A\u52A1\u548C\u54C1\u724C\u4E0A\u591A\u6837\u5316\u7684\u89C6\u89C9\u9700\u6C42\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u4E3B\u8272\u3001\u5706\u89D2\u3001\u8FB9\u6846\u548C\u90E8\u5206\u7EC4\u4EF6\u7684\u89C6\u89C9\u5B9A\u5236\u3002
  4. ![](https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png)
  5. ## Ant Design Vue \u7684\u6837\u5F0F\u53D8\u91CF
  6. antd \u7684\u6837\u5F0F\u4F7F\u7528\u4E86 [Less](http://lesscss.org/) \u4F5C\u4E3A\u5F00\u53D1\u8BED\u8A00\uFF0C\u5E76\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u5168\u5C40/\u7EC4\u4EF6\u7684\u6837\u5F0F\u53D8\u91CF\uFF0C\u4F60\u53EF\u4EE5\u6839\u636E\u9700\u6C42\u8FDB\u884C\u76F8\u5E94\u8C03\u6574\u3002
  7. \u4EE5\u4E0B\u662F\u4E00\u4E9B\u6700\u5E38\u7528\u7684\u901A\u7528\u53D8\u91CF\uFF0C\u6240\u6709\u6837\u5F0F\u53D8\u91CF\u53EF\u4EE5\u5728 [\u8FD9\u91CC](https://github.com/vueComponent/ant-design-vue/blob/next/components/style/themes/default.less) \u627E\u5230\u3002
  8. \`\`\`less
  9. @primary-color: #1890ff; // \u5168\u5C40\u4E3B\u8272
  10. @link-color: #1890ff; // \u94FE\u63A5\u8272
  11. @success-color: #52c41a; // \u6210\u529F\u8272
  12. @warning-color: #faad14; // \u8B66\u544A\u8272
  13. @error-color: #f5222d; // \u9519\u8BEF\u8272
  14. @font-size-base: 14px; // \u4E3B\u5B57\u53F7
  15. @heading-color: rgba(0, 0, 0, 0.85); // \u6807\u9898\u8272
  16. @text-color: rgba(0, 0, 0, 0.65); // \u4E3B\u6587\u672C\u8272
  17. @text-color-secondary: rgba(0, 0, 0, 0.45); // \u6B21\u6587\u672C\u8272
  18. @disabled-color: rgba(0, 0, 0, 0.25); // \u5931\u6548\u8272
  19. @border-radius-base: 4px; // \u7EC4\u4EF6/\u6D6E\u5C42\u5706\u89D2
  20. @border-color-base: #d9d9d9; // \u8FB9\u6846\u8272
  21. @box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.15); // \u6D6E\u5C42\u9634\u5F71
  22. \`\`\`
  23. \u5982\u679C\u4EE5\u4E0A\u53D8\u91CF\u4E0D\u80FD\u6EE1\u8DB3\u4F60\u7684\u5B9A\u5236\u9700\u6C42\uFF0C\u53EF\u4EE5\u7ED9\u6211\u4EEC\u63D0 issue\u3002
  24. ## \u5B9A\u5236\u65B9\u5F0F
  25. \u6211\u4EEC\u4F7F\u7528 [modifyVars](http://lesscss.org/usage/#using-less-in-the-browser-modify-variables) \u7684\u65B9\u5F0F\u6765\u8FDB\u884C\u8986\u76D6\u53D8\u91CF\u3002\u4E0B\u9762\u5C06\u9488\u5BF9\u4E0D\u540C\u7684\u573A\u666F\u63D0\u4F9B\u4E00\u4E9B\u5E38\u7528\u7684\u5B9A\u5236\u65B9\u5F0F\u3002
  26. ### \u5728 webpack \u4E2D\u5B9A\u5236\u4E3B\u9898
  27. \u6211\u4EEC\u4EE5 webpack@4 \u4E3A\u4F8B\u8FDB\u884C\u8BF4\u660E\uFF0C\u4EE5\u4E0B\u662F\u4E00\u4E2A \`webpack.config.js\` \u7684\u5178\u578B\u4F8B\u5B50\uFF0C\u5BF9 [less-loader](https://github.com/webpack-contrib/less-loader) \u7684 options \u5C5E\u6027\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\u3002
  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. \u6CE8\u610F less-loader \u7684\u5904\u7406\u8303\u56F4\u4E0D\u8981\u8FC7\u6EE4\u6389 \`node_modules\` \u4E0B\u7684 antd \u5305\u3002
  56. ### \u5728 vue cli 2 \u4E2D\u5B9A\u5236\u4E3B\u9898
  57. \u4FEE\u6539\`build/utils.js\`\u6587\u4EF6
  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. ### \u5728 vue cli 3 \u4E2D\u5B9A\u5236\u4E3B\u9898
  71. \u9879\u76EE\u6839\u76EE\u5F55\u4E0B\u65B0\u5EFA\u6587\u4EF6\`vue.config.js\`
  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. ### \u914D\u7F6E less \u53D8\u91CF\u6587\u4EF6
  92. \u53E6\u5916\u4E00\u79CD\u65B9\u5F0F\u662F\u5EFA\u7ACB\u4E00\u4E2A\u5355\u72EC\u7684 \`less\` \u53D8\u91CF\u6587\u4EF6\uFF0C\u5F15\u5165\u8FD9\u4E2A\u6587\u4EF6\u8986\u76D6 \`antd.less\` \u91CC\u7684\u53D8\u91CF\u3002
  93. \`\`\`css
  94. @import '~ant-design-vue/dist/antd.less'; // \u5F15\u5165\u5B98\u65B9\u63D0\u4F9B\u7684 less \u6837\u5F0F\u5165\u53E3\u6587\u4EF6
  95. @import 'your-theme-file.less'; // \u7528\u4E8E\u8986\u76D6\u4E0A\u9762\u5B9A\u4E49\u7684\u53D8\u91CF
  96. \`\`\`
  97. \u6CE8\u610F\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u5DF2\u7ECF\u8F7D\u5165\u4E86\u6240\u6709\u7EC4\u4EF6\u7684\u6837\u5F0F\uFF0C\u4E0D\u9700\u8981\u4E5F\u65E0\u6CD5\u548C\u6309\u9700\u52A0\u8F7D\u63D2\u4EF6 \`babel-plugin-import\` \u7684 \`style\` \u5C5E\u6027\u4E00\u8D77\u4F7F\u7528\u3002
  98. ## \u6CA1\u6709\u751F\u6548\uFF1F
  99. \u6CE8\u610F\u6837\u5F0F\u5FC5\u987B\u52A0\u8F7D less \u683C\u5F0F\uFF0C\u4E00\u4E2A\u5E38\u89C1\u7684\u95EE\u9898\u5C31\u662F\u5F15\u5165\u4E86\u591A\u4EFD\u6837\u5F0F\uFF0Cless \u7684\u6837\u5F0F\u88AB css \u7684\u6837\u5F0F\u8986\u76D6\u4E86\u3002
  100. - \u5982\u679C\u4F60\u5728\u4F7F\u7528 [babel-plugin-import](https://github.com/ant-design/babel-plugin-import) \u7684 \`style\` \u914D\u7F6E\u6765\u5F15\u5165\u6837\u5F0F\uFF0C\u9700\u8981\u5C06\u914D\u7F6E\u503C\u4ECE \`'css'\` \u6539\u4E3A \`true\`\uFF0C\u8FD9\u6837\u4F1A\u5F15\u5165 less \u6587\u4EF6\u3002
  101. - \u5982\u679C\u4F60\u662F\u901A\u8FC7 \`'ant-design-vue/dist/antd.css'\` \u5F15\u5165\u6837\u5F0F\u7684\uFF0C\u6539\u4E3A \`ant-design-vue/dist/antd.less\`\u3002
  102. ## \u4F7F\u7528\u6697\u9ED1\u4E3B\u9898
  103. \u65B9\u5F0F\u4E00\uFF1A\u5728\u6837\u5F0F\u6587\u4EF6\u5168\u91CF\u5F15\u5165 [antd.dark.less](https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.less)\u3002
  104. \`\`\`less
  105. @import '~ant-design-vue/dist/antd.dark.less'; // \u5F15\u5165\u5B98\u65B9\u63D0\u4F9B\u7684\u6697\u8272 less \u6837\u5F0F\u5165\u53E3\u6587\u4EF6
  106. \`\`\`
  107. \u5982\u679C\u9879\u76EE\u4E0D\u4F7F\u7528 Less\uFF0C\u53EF\u5728 CSS \u6587\u4EF6\u4E2D\u5168\u91CF\u5F15\u5165 [antd.dark.css](https://unpkg.com/browse/ant-design-vue@2.0.0/dist/antd.dark.css)\u3002
  108. \`\`\`css
  109. @import '~ant-design-vue/dist/antd.dark.css';
  110. \`\`\`
  111. > \u6CE8\u610F\u8FD9\u79CD\u65B9\u5F0F\u4E0B\u4F60\u4E0D\u9700\u8981\u518D\u5F15\u5165 \`ant-design-vue/dist/antd.less\` \u6216 \`ant-design-vue/dist/antd.css\` \u4E86\uFF0C\u53EF\u4EE5\u5B89\u5168\u79FB\u9664\u6389\u3002\u4E5F\u4E0D\u9700\u8981\u5F00\u542F babel-plugin-import \u7684 \`style\` \u914D\u7F6E\u3002\u901A\u8FC7\u6B64\u65B9\u5F0F\u4E0D\u80FD\u540C\u65F6\u914D\u7F6E\u4E24\u79CD\u53CA\u4EE5\u4E0A\u4E3B\u9898\u3002
  112. \u65B9\u5F0F\u4E8C\uFF1A\u662F\u7528\u5728 \`webpack.config.js\` \u4F7F\u7528 [less-loader](https://github.com/webpack-contrib/less-loader) \u6309\u9700\u5F15\u5165\uFF1A
  113. \`\`\`diff
  114. const { getThemeVariables } = require('ant-design-vue/dist/theme');
  115. // webpack.config.js
  116. module.exports = {
  117. rules: [{
  118. test: /\\.less$/,
  119. use: [{
  120. loader: 'style-loader',
  121. }, {
  122. loader: 'css-loader', // translates CSS into CommonJS
  123. }, {
  124. loader: 'less-loader', // compiles Less to CSS
  125. + options: {
  126. + lessOptions: { // \u5982\u679C\u4F7F\u7528less-loader@5\uFF0C\u8BF7\u79FB\u9664 lessOptions \u8FD9\u4E00\u7EA7\u76F4\u63A5\u914D\u7F6E\u9009\u9879\u3002
  127. + modifyVars: getThemeVariables({
  128. + dark: true, // \u5F00\u542F\u6697\u9ED1\u6A21\u5F0F
  129. + }),
  130. + javascriptEnabled: true,
  131. + },
  132. + },
  133. }],
  134. }],
  135. };
  136. \`\`\`
  137. ## \u793E\u533A\u6559\u7A0B for Antd React
  138. - [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)
  139. - [Theming Ant Design with Sass and Webpack](https://gist.github.com/Kruemelkatze/057f01b8e15216ae707dc7e6c9061ef7)
  140. `,html:`<h1 id="\u5B9A\u5236\u4E3B\u9898">\u5B9A\u5236\u4E3B\u9898</h1>
  141. <p>ant-design-vue \u7684\u7EC4\u4EF6\u7ED3\u6784\u53CA\u6837\u5F0F\u548C Antd React \u5B8C\u5168\u4E00\u81F4\uFF0C\u4F60\u53EF\u4EE5\u53C2\u8003 Antd React \u7684\u5B9A\u5236\u65B9\u5F0F\u8FDB\u884C\u914D\u7F6E\u3002</p>
  142. <p>Ant Design \u8BBE\u8BA1\u89C4\u8303\u4E0A\u652F\u6301\u4E00\u5B9A\u7A0B\u5EA6\u7684\u6837\u5F0F\u5B9A\u5236\uFF0C\u4EE5\u6EE1\u8DB3\u4E1A\u52A1\u548C\u54C1\u724C\u4E0A\u591A\u6837\u5316\u7684\u89C6\u89C9\u9700\u6C42\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u4E3B\u8272\u3001\u5706\u89D2\u3001\u8FB9\u6846\u548C\u90E8\u5206\u7EC4\u4EF6\u7684\u89C6\u89C9\u5B9A\u5236\u3002</p>
  143. <p><img src="https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png" alt=""></p>
  144. <h2 id="ant-design-vue-\u7684\u6837\u5F0F\u53D8\u91CF">Ant Design Vue \u7684\u6837\u5F0F\u53D8\u91CF</h2>
  145. <p>antd \u7684\u6837\u5F0F\u4F7F\u7528\u4E86 <a href="http://lesscss.org/" target="_blank" rel="noopener noreferrer">Less</a> \u4F5C\u4E3A\u5F00\u53D1\u8BED\u8A00\uFF0C\u5E76\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u5168\u5C40/\u7EC4\u4EF6\u7684\u6837\u5F0F\u53D8\u91CF\uFF0C\u4F60\u53EF\u4EE5\u6839\u636E\u9700\u6C42\u8FDB\u884C\u76F8\u5E94\u8C03\u6574\u3002</p>
  146. <p>\u4EE5\u4E0B\u662F\u4E00\u4E9B\u6700\u5E38\u7528\u7684\u901A\u7528\u53D8\u91CF\uFF0C\u6240\u6709\u6837\u5F0F\u53D8\u91CF\u53EF\u4EE5\u5728 <a href="https://github.com/vueComponent/ant-design-vue/blob/next/components/style/themes/default.less" target="_blank" rel="noopener noreferrer">\u8FD9\u91CC</a> \u627E\u5230\u3002</p>
  147. <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">// \u5168\u5C40\u4E3B\u8272</span>
  148. <span class="token variable">@link-color<span class="token punctuation">:</span></span> #1890ff<span class="token punctuation">;</span> <span class="token comment">// \u94FE\u63A5\u8272</span>
  149. <span class="token variable">@success-color<span class="token punctuation">:</span></span> #52c41a<span class="token punctuation">;</span> <span class="token comment">// \u6210\u529F\u8272</span>
  150. <span class="token variable">@warning-color<span class="token punctuation">:</span></span> #faad14<span class="token punctuation">;</span> <span class="token comment">// \u8B66\u544A\u8272</span>
  151. <span class="token variable">@error-color<span class="token punctuation">:</span></span> #f5222d<span class="token punctuation">;</span> <span class="token comment">// \u9519\u8BEF\u8272</span>
  152. <span class="token variable">@font-size-base<span class="token punctuation">:</span></span> 14px<span class="token punctuation">;</span> <span class="token comment">// \u4E3B\u5B57\u53F7</span>
  153. <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">// \u6807\u9898\u8272</span>
  154. <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.65<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// \u4E3B\u6587\u672C\u8272</span>
  155. <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">// \u6B21\u6587\u672C\u8272</span>
  156. <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">// \u5931\u6548\u8272</span>
  157. <span class="token variable">@border-radius-base<span class="token punctuation">:</span></span> 4px<span class="token punctuation">;</span> <span class="token comment">// \u7EC4\u4EF6/\u6D6E\u5C42\u5706\u89D2</span>
  158. <span class="token variable">@border-color-base<span class="token punctuation">:</span></span> #d9d9d9<span class="token punctuation">;</span> <span class="token comment">// \u8FB9\u6846\u8272</span>
  159. <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">// \u6D6E\u5C42\u9634\u5F71</span>
  160. </code></pre>
  161. <p>\u5982\u679C\u4EE5\u4E0A\u53D8\u91CF\u4E0D\u80FD\u6EE1\u8DB3\u4F60\u7684\u5B9A\u5236\u9700\u6C42\uFF0C\u53EF\u4EE5\u7ED9\u6211\u4EEC\u63D0 issue\u3002</p>
  162. <h2 id="\u5B9A\u5236\u65B9\u5F0F">\u5B9A\u5236\u65B9\u5F0F</h2>
  163. <p>\u6211\u4EEC\u4F7F\u7528 <a href="http://lesscss.org/usage/#using-less-in-the-browser-modify-variables" target="_blank" rel="noopener noreferrer">modifyVars</a> \u7684\u65B9\u5F0F\u6765\u8FDB\u884C\u8986\u76D6\u53D8\u91CF\u3002\u4E0B\u9762\u5C06\u9488\u5BF9\u4E0D\u540C\u7684\u573A\u666F\u63D0\u4F9B\u4E00\u4E9B\u5E38\u7528\u7684\u5B9A\u5236\u65B9\u5F0F\u3002</p>
  164. <h3 id="\u5728-webpack-\u4E2D\u5B9A\u5236\u4E3B\u9898">\u5728 webpack \u4E2D\u5B9A\u5236\u4E3B\u9898</h3>
  165. <p>\u6211\u4EEC\u4EE5 webpack@4 \u4E3A\u4F8B\u8FDB\u884C\u8BF4\u660E\uFF0C\u4EE5\u4E0B\u662F\u4E00\u4E2A <code>webpack.config.js</code> \u7684\u5178\u578B\u4F8B\u5B50\uFF0C\u5BF9 <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> \u7684 options \u5C5E\u6027\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\u3002</p>
  166. <pre class="language-diff" v-pre><code>// webpack.config.js
  167. module.exports = {
  168. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  169. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  170. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  171. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'style-loader',
  172. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  173. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'css-loader', // translates CSS into CommonJS
  174. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  175. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'less-loader', // compiles Less to CSS
  176. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  177. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: {
  178. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  179. </span><span class="token prefix inserted">+</span><span class="token line"> 'primary-color': '#1DA57A',
  180. </span><span class="token prefix inserted">+</span><span class="token line"> 'link-color': '#1DA57A',
  181. </span><span class="token prefix inserted">+</span><span class="token line"> 'border-radius-base': '2px',
  182. </span><span class="token prefix inserted">+</span><span class="token line"> },
  183. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  184. </span><span class="token prefix inserted">+</span><span class="token line"> }
  185. </span><span class="token prefix inserted">+</span><span class="token line"> },
  186. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  187. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other rules
  188. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  189. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other config
  190. </span></span>}
  191. </code></pre>
  192. <p>\u6CE8\u610F less-loader \u7684\u5904\u7406\u8303\u56F4\u4E0D\u8981\u8FC7\u6EE4\u6389 <code>node_modules</code> \u4E0B\u7684 antd \u5305\u3002</p>
  193. <h3 id="\u5728-vue-cli-2-\u4E2D\u5B9A\u5236\u4E3B\u9898">\u5728 vue cli 2 \u4E2D\u5B9A\u5236\u4E3B\u9898</h3>
  194. <p>\u4FEE\u6539<code>build/utils.js</code>\u6587\u4EF6</p>
  195. <pre class="language-diff" v-pre><code>// build/utils.js
  196. <span class="token deleted-sign deleted"><span class="token prefix deleted">-</span><span class="token line"> less: generateLoaders('less'),
  197. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> less: generateLoaders('less', {
  198. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  199. </span><span class="token prefix inserted">+</span><span class="token line"> 'primary-color': '#1DA57A',
  200. </span><span class="token prefix inserted">+</span><span class="token line"> 'link-color': '#1DA57A',
  201. </span><span class="token prefix inserted">+</span><span class="token line"> 'border-radius-base': '2px',
  202. </span><span class="token prefix inserted">+</span><span class="token line"> },
  203. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  204. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  205. </span></span>
  206. </code></pre>
  207. <h3 id="\u5728-vue-cli-3-\u4E2D\u5B9A\u5236\u4E3B\u9898">\u5728 vue cli 3 \u4E2D\u5B9A\u5236\u4E3B\u9898</h3>
  208. <p>\u9879\u76EE\u6839\u76EE\u5F55\u4E0B\u65B0\u5EFA\u6587\u4EF6<code>vue.config.js</code></p>
  209. <pre class="language-js" v-pre><code><span class="token comment">// vue.config.js for less-loader@6.0.0</span>
  210. module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
  211. <span class="token literal-property property">css</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  212. <span class="token literal-property property">loaderOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  213. <span class="token literal-property property">less</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  214. <span class="token literal-property property">lessOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  215. <span class="token literal-property property">modifyVars</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  216. <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>
  217. <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>
  218. <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>
  219. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  220. <span class="token literal-property property">javascriptEnabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
  221. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  222. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  223. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  224. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  225. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  226. </code></pre>
  227. <h3 id="\u914D\u7F6E-less-\u53D8\u91CF\u6587\u4EF6">\u914D\u7F6E less \u53D8\u91CF\u6587\u4EF6</h3>
  228. <p>\u53E6\u5916\u4E00\u79CD\u65B9\u5F0F\u662F\u5EFA\u7ACB\u4E00\u4E2A\u5355\u72EC\u7684 <code>less</code> \u53D8\u91CF\u6587\u4EF6\uFF0C\u5F15\u5165\u8FD9\u4E2A\u6587\u4EF6\u8986\u76D6 <code>antd.less</code> \u91CC\u7684\u53D8\u91CF\u3002</p>
  229. <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> // \u5F15\u5165\u5B98\u65B9\u63D0\u4F9B\u7684 less \u6837\u5F0F\u5165\u53E3\u6587\u4EF6
  230. <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> // \u7528\u4E8E\u8986\u76D6\u4E0A\u9762\u5B9A\u4E49\u7684\u53D8\u91CF
  231. </code></pre>
  232. <p>\u6CE8\u610F\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u5DF2\u7ECF\u8F7D\u5165\u4E86\u6240\u6709\u7EC4\u4EF6\u7684\u6837\u5F0F\uFF0C\u4E0D\u9700\u8981\u4E5F\u65E0\u6CD5\u548C\u6309\u9700\u52A0\u8F7D\u63D2\u4EF6 <code>babel-plugin-import</code> \u7684 <code>style</code> \u5C5E\u6027\u4E00\u8D77\u4F7F\u7528\u3002</p>
  233. <h2 id="\u6CA1\u6709\u751F\u6548\uFF1F">\u6CA1\u6709\u751F\u6548\uFF1F</h2>
  234. <p>\u6CE8\u610F\u6837\u5F0F\u5FC5\u987B\u52A0\u8F7D less \u683C\u5F0F\uFF0C\u4E00\u4E2A\u5E38\u89C1\u7684\u95EE\u9898\u5C31\u662F\u5F15\u5165\u4E86\u591A\u4EFD\u6837\u5F0F\uFF0Cless \u7684\u6837\u5F0F\u88AB css \u7684\u6837\u5F0F\u8986\u76D6\u4E86\u3002</p>
  235. <ul>
  236. <li>\u5982\u679C\u4F60\u5728\u4F7F\u7528 <a href="https://github.com/ant-design/babel-plugin-import" target="_blank" rel="noopener noreferrer">babel-plugin-import</a> \u7684 <code>style</code> \u914D\u7F6E\u6765\u5F15\u5165\u6837\u5F0F\uFF0C\u9700\u8981\u5C06\u914D\u7F6E\u503C\u4ECE <code>'css'</code> \u6539\u4E3A <code>true</code>\uFF0C\u8FD9\u6837\u4F1A\u5F15\u5165 less \u6587\u4EF6\u3002</li>
  237. <li>\u5982\u679C\u4F60\u662F\u901A\u8FC7 <code>'ant-design-vue/dist/antd.css'</code> \u5F15\u5165\u6837\u5F0F\u7684\uFF0C\u6539\u4E3A <code>ant-design-vue/dist/antd.less</code>\u3002</li>
  238. </ul>
  239. <h2 id="\u4F7F\u7528\u6697\u9ED1\u4E3B\u9898">\u4F7F\u7528\u6697\u9ED1\u4E3B\u9898</h2>
  240. <p>\u65B9\u5F0F\u4E00\uFF1A\u5728\u6837\u5F0F\u6587\u4EF6\u5168\u91CF\u5F15\u5165 <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>\u3002</p>
  241. <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">// \u5F15\u5165\u5B98\u65B9\u63D0\u4F9B\u7684\u6697\u8272 less \u6837\u5F0F\u5165\u53E3\u6587\u4EF6</span>
  242. </code></pre>
  243. <p>\u5982\u679C\u9879\u76EE\u4E0D\u4F7F\u7528 Less\uFF0C\u53EF\u5728 CSS \u6587\u4EF6\u4E2D\u5168\u91CF\u5F15\u5165 <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>\u3002</p>
  244. <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>
  245. </code></pre>
  246. <blockquote>
  247. <p>\u6CE8\u610F\u8FD9\u79CD\u65B9\u5F0F\u4E0B\u4F60\u4E0D\u9700\u8981\u518D\u5F15\u5165 <code>ant-design-vue/dist/antd.less</code> \u6216 <code>ant-design-vue/dist/antd.css</code> \u4E86\uFF0C\u53EF\u4EE5\u5B89\u5168\u79FB\u9664\u6389\u3002\u4E5F\u4E0D\u9700\u8981\u5F00\u542F babel-plugin-import \u7684 <code>style</code> \u914D\u7F6E\u3002\u901A\u8FC7\u6B64\u65B9\u5F0F\u4E0D\u80FD\u540C\u65F6\u914D\u7F6E\u4E24\u79CD\u53CA\u4EE5\u4E0A\u4E3B\u9898\u3002</p>
  248. </blockquote>
  249. <p>\u65B9\u5F0F\u4E8C\uFF1A\u662F\u7528\u5728 <code>webpack.config.js</code> \u4F7F\u7528 <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> \u6309\u9700\u5F15\u5165\uFF1A</p>
  250. <pre class="language-diff" v-pre><code>const { getThemeVariables } = require('ant-design-vue/dist/theme');
  251. // webpack.config.js
  252. module.exports = {
  253. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  254. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  255. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  256. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'style-loader',
  257. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  258. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'css-loader', // translates CSS into CommonJS
  259. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  260. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: 'less-loader', // compiles Less to CSS
  261. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  262. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: { // \u5982\u679C\u4F7F\u7528less-loader@5\uFF0C\u8BF7\u79FB\u9664 lessOptions \u8FD9\u4E00\u7EA7\u76F4\u63A5\u914D\u7F6E\u9009\u9879\u3002
  263. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: getThemeVariables({
  264. </span><span class="token prefix inserted">+</span><span class="token line"> dark: true, // \u5F00\u542F\u6697\u9ED1\u6A21\u5F0F
  265. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  266. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  267. </span><span class="token prefix inserted">+</span><span class="token line"> },
  268. </span><span class="token prefix inserted">+</span><span class="token line"> },
  269. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  270. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  271. </span></span>};
  272. </code></pre>
  273. <h2 id="\u793E\u533A\u6559\u7A0B-for-antd-react">\u793E\u533A\u6559\u7A0B for Antd React</h2>
  274. <ul>
  275. <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>
  276. <li><a href="https://gist.github.com/Kruemelkatze/057f01b8e15216ae707dc7e6c9061ef7" target="_blank" rel="noopener noreferrer">Theming Ant Design with Sass and Webpack</a></li>
  277. </ul>
  278. `,lastUpdated:1748059052826}},o={class:"markdown"};function l(c,n,r,i,u,d){return p(),a("article",o,n[0]||(n[0]=[e(`<h1 id="\u5B9A\u5236\u4E3B\u9898">\u5B9A\u5236\u4E3B\u9898</h1><p>ant-design-vue \u7684\u7EC4\u4EF6\u7ED3\u6784\u53CA\u6837\u5F0F\u548C Antd React \u5B8C\u5168\u4E00\u81F4\uFF0C\u4F60\u53EF\u4EE5\u53C2\u8003 Antd React \u7684\u5B9A\u5236\u65B9\u5F0F\u8FDB\u884C\u914D\u7F6E\u3002</p><p>Ant Design \u8BBE\u8BA1\u89C4\u8303\u4E0A\u652F\u6301\u4E00\u5B9A\u7A0B\u5EA6\u7684\u6837\u5F0F\u5B9A\u5236\uFF0C\u4EE5\u6EE1\u8DB3\u4E1A\u52A1\u548C\u54C1\u724C\u4E0A\u591A\u6837\u5316\u7684\u89C6\u89C9\u9700\u6C42\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u4E3B\u8272\u3001\u5706\u89D2\u3001\u8FB9\u6846\u548C\u90E8\u5206\u7EC4\u4EF6\u7684\u89C6\u89C9\u5B9A\u5236\u3002</p><p><img src="https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png" alt=""></p><h2 id="ant-design-vue-\u7684\u6837\u5F0F\u53D8\u91CF">Ant Design Vue \u7684\u6837\u5F0F\u53D8\u91CF</h2><p>antd \u7684\u6837\u5F0F\u4F7F\u7528\u4E86 <a href="http://lesscss.org/" target="_blank" rel="noopener noreferrer">Less</a> \u4F5C\u4E3A\u5F00\u53D1\u8BED\u8A00\uFF0C\u5E76\u5B9A\u4E49\u4E86\u4E00\u7CFB\u5217\u5168\u5C40/\u7EC4\u4EF6\u7684\u6837\u5F0F\u53D8\u91CF\uFF0C\u4F60\u53EF\u4EE5\u6839\u636E\u9700\u6C42\u8FDB\u884C\u76F8\u5E94\u8C03\u6574\u3002</p><p>\u4EE5\u4E0B\u662F\u4E00\u4E9B\u6700\u5E38\u7528\u7684\u901A\u7528\u53D8\u91CF\uFF0C\u6240\u6709\u6837\u5F0F\u53D8\u91CF\u53EF\u4EE5\u5728 <a href="https://github.com/vueComponent/ant-design-vue/blob/next/components/style/themes/default.less" target="_blank" rel="noopener noreferrer">\u8FD9\u91CC</a> \u627E\u5230\u3002</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">// \u5168\u5C40\u4E3B\u8272</span>
  279. <span class="token variable">@link-color<span class="token punctuation">:</span></span> #1890ff<span class="token punctuation">;</span> <span class="token comment">// \u94FE\u63A5\u8272</span>
  280. <span class="token variable">@success-color<span class="token punctuation">:</span></span> #52c41a<span class="token punctuation">;</span> <span class="token comment">// \u6210\u529F\u8272</span>
  281. <span class="token variable">@warning-color<span class="token punctuation">:</span></span> #faad14<span class="token punctuation">;</span> <span class="token comment">// \u8B66\u544A\u8272</span>
  282. <span class="token variable">@error-color<span class="token punctuation">:</span></span> #f5222d<span class="token punctuation">;</span> <span class="token comment">// \u9519\u8BEF\u8272</span>
  283. <span class="token variable">@font-size-base<span class="token punctuation">:</span></span> 14px<span class="token punctuation">;</span> <span class="token comment">// \u4E3B\u5B57\u53F7</span>
  284. <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">// \u6807\u9898\u8272</span>
  285. <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.65<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// \u4E3B\u6587\u672C\u8272</span>
  286. <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">// \u6B21\u6587\u672C\u8272</span>
  287. <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">// \u5931\u6548\u8272</span>
  288. <span class="token variable">@border-radius-base<span class="token punctuation">:</span></span> 4px<span class="token punctuation">;</span> <span class="token comment">// \u7EC4\u4EF6/\u6D6E\u5C42\u5706\u89D2</span>
  289. <span class="token variable">@border-color-base<span class="token punctuation">:</span></span> #d9d9d9<span class="token punctuation">;</span> <span class="token comment">// \u8FB9\u6846\u8272</span>
  290. <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">// \u6D6E\u5C42\u9634\u5F71</span>
  291. </code></pre><p>\u5982\u679C\u4EE5\u4E0A\u53D8\u91CF\u4E0D\u80FD\u6EE1\u8DB3\u4F60\u7684\u5B9A\u5236\u9700\u6C42\uFF0C\u53EF\u4EE5\u7ED9\u6211\u4EEC\u63D0 issue\u3002</p><h2 id="\u5B9A\u5236\u65B9\u5F0F">\u5B9A\u5236\u65B9\u5F0F</h2><p>\u6211\u4EEC\u4F7F\u7528 <a href="http://lesscss.org/usage/#using-less-in-the-browser-modify-variables" target="_blank" rel="noopener noreferrer">modifyVars</a> \u7684\u65B9\u5F0F\u6765\u8FDB\u884C\u8986\u76D6\u53D8\u91CF\u3002\u4E0B\u9762\u5C06\u9488\u5BF9\u4E0D\u540C\u7684\u573A\u666F\u63D0\u4F9B\u4E00\u4E9B\u5E38\u7528\u7684\u5B9A\u5236\u65B9\u5F0F\u3002</p><h3 id="\u5728-webpack-\u4E2D\u5B9A\u5236\u4E3B\u9898">\u5728 webpack \u4E2D\u5B9A\u5236\u4E3B\u9898</h3><p>\u6211\u4EEC\u4EE5 webpack@4 \u4E3A\u4F8B\u8FDB\u884C\u8BF4\u660E\uFF0C\u4EE5\u4E0B\u662F\u4E00\u4E2A <code>webpack.config.js</code> \u7684\u5178\u578B\u4F8B\u5B50\uFF0C\u5BF9 <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> \u7684 options \u5C5E\u6027\u8FDB\u884C\u76F8\u5E94\u914D\u7F6E\u3002</p><pre class="language-diff"><code>// webpack.config.js
  292. module.exports = {
  293. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  294. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  295. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  296. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;style-loader&#39;,
  297. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  298. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;css-loader&#39;, // translates CSS into CommonJS
  299. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  300. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;less-loader&#39;, // compiles Less to CSS
  301. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  302. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: {
  303. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  304. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;primary-color&#39;: &#39;#1DA57A&#39;,
  305. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;link-color&#39;: &#39;#1DA57A&#39;,
  306. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;border-radius-base&#39;: &#39;2px&#39;,
  307. </span><span class="token prefix inserted">+</span><span class="token line"> },
  308. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  309. </span><span class="token prefix inserted">+</span><span class="token line"> }
  310. </span><span class="token prefix inserted">+</span><span class="token line"> },
  311. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  312. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other rules
  313. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  314. </span><span class="token prefix unchanged"> </span><span class="token line"> // ...other config
  315. </span></span>}
  316. </code></pre><p>\u6CE8\u610F less-loader \u7684\u5904\u7406\u8303\u56F4\u4E0D\u8981\u8FC7\u6EE4\u6389 <code>node_modules</code> \u4E0B\u7684 antd \u5305\u3002</p><h3 id="\u5728-vue-cli-2-\u4E2D\u5B9A\u5236\u4E3B\u9898">\u5728 vue cli 2 \u4E2D\u5B9A\u5236\u4E3B\u9898</h3><p>\u4FEE\u6539<code>build/utils.js</code>\u6587\u4EF6</p><pre class="language-diff"><code>// build/utils.js
  317. <span class="token deleted-sign deleted"><span class="token prefix deleted">-</span><span class="token line"> less: generateLoaders(&#39;less&#39;),
  318. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> less: generateLoaders(&#39;less&#39;, {
  319. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: {
  320. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;primary-color&#39;: &#39;#1DA57A&#39;,
  321. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;link-color&#39;: &#39;#1DA57A&#39;,
  322. </span><span class="token prefix inserted">+</span><span class="token line"> &#39;border-radius-base&#39;: &#39;2px&#39;,
  323. </span><span class="token prefix inserted">+</span><span class="token line"> },
  324. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  325. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  326. </span></span>
  327. </code></pre><h3 id="\u5728-vue-cli-3-\u4E2D\u5B9A\u5236\u4E3B\u9898">\u5728 vue cli 3 \u4E2D\u5B9A\u5236\u4E3B\u9898</h3><p>\u9879\u76EE\u6839\u76EE\u5F55\u4E0B\u65B0\u5EFA\u6587\u4EF6<code>vue.config.js</code></p><pre class="language-js"><code><span class="token comment">// vue.config.js for less-loader@6.0.0</span>
  328. module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
  329. <span class="token literal-property property">css</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  330. <span class="token literal-property property">loaderOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  331. <span class="token literal-property property">less</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  332. <span class="token literal-property property">lessOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  333. <span class="token literal-property property">modifyVars</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  334. <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>
  335. <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>
  336. <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>
  337. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  338. <span class="token literal-property property">javascriptEnabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
  339. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  340. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  341. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  342. <span class="token punctuation">}</span><span class="token punctuation">,</span>
  343. <span class="token punctuation">}</span><span class="token punctuation">;</span>
  344. </code></pre><h3 id="\u914D\u7F6E-less-\u53D8\u91CF\u6587\u4EF6">\u914D\u7F6E less \u53D8\u91CF\u6587\u4EF6</h3><p>\u53E6\u5916\u4E00\u79CD\u65B9\u5F0F\u662F\u5EFA\u7ACB\u4E00\u4E2A\u5355\u72EC\u7684 <code>less</code> \u53D8\u91CF\u6587\u4EF6\uFF0C\u5F15\u5165\u8FD9\u4E2A\u6587\u4EF6\u8986\u76D6 <code>antd.less</code> \u91CC\u7684\u53D8\u91CF\u3002</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> // \u5F15\u5165\u5B98\u65B9\u63D0\u4F9B\u7684 less \u6837\u5F0F\u5165\u53E3\u6587\u4EF6
  345. <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> // \u7528\u4E8E\u8986\u76D6\u4E0A\u9762\u5B9A\u4E49\u7684\u53D8\u91CF
  346. </code></pre><p>\u6CE8\u610F\uFF0C\u8FD9\u79CD\u65B9\u5F0F\u5DF2\u7ECF\u8F7D\u5165\u4E86\u6240\u6709\u7EC4\u4EF6\u7684\u6837\u5F0F\uFF0C\u4E0D\u9700\u8981\u4E5F\u65E0\u6CD5\u548C\u6309\u9700\u52A0\u8F7D\u63D2\u4EF6 <code>babel-plugin-import</code> \u7684 <code>style</code> \u5C5E\u6027\u4E00\u8D77\u4F7F\u7528\u3002</p><h2 id="\u6CA1\u6709\u751F\u6548\uFF1F">\u6CA1\u6709\u751F\u6548\uFF1F</h2><p>\u6CE8\u610F\u6837\u5F0F\u5FC5\u987B\u52A0\u8F7D less \u683C\u5F0F\uFF0C\u4E00\u4E2A\u5E38\u89C1\u7684\u95EE\u9898\u5C31\u662F\u5F15\u5165\u4E86\u591A\u4EFD\u6837\u5F0F\uFF0Cless \u7684\u6837\u5F0F\u88AB css \u7684\u6837\u5F0F\u8986\u76D6\u4E86\u3002</p><ul><li>\u5982\u679C\u4F60\u5728\u4F7F\u7528 <a href="https://github.com/ant-design/babel-plugin-import" target="_blank" rel="noopener noreferrer">babel-plugin-import</a> \u7684 <code>style</code> \u914D\u7F6E\u6765\u5F15\u5165\u6837\u5F0F\uFF0C\u9700\u8981\u5C06\u914D\u7F6E\u503C\u4ECE <code>&#39;css&#39;</code> \u6539\u4E3A <code>true</code>\uFF0C\u8FD9\u6837\u4F1A\u5F15\u5165 less \u6587\u4EF6\u3002</li><li>\u5982\u679C\u4F60\u662F\u901A\u8FC7 <code>&#39;ant-design-vue/dist/antd.css&#39;</code> \u5F15\u5165\u6837\u5F0F\u7684\uFF0C\u6539\u4E3A <code>ant-design-vue/dist/antd.less</code>\u3002</li></ul><h2 id="\u4F7F\u7528\u6697\u9ED1\u4E3B\u9898">\u4F7F\u7528\u6697\u9ED1\u4E3B\u9898</h2><p>\u65B9\u5F0F\u4E00\uFF1A\u5728\u6837\u5F0F\u6587\u4EF6\u5168\u91CF\u5F15\u5165 <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>\u3002</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">// \u5F15\u5165\u5B98\u65B9\u63D0\u4F9B\u7684\u6697\u8272 less \u6837\u5F0F\u5165\u53E3\u6587\u4EF6</span>
  347. </code></pre><p>\u5982\u679C\u9879\u76EE\u4E0D\u4F7F\u7528 Less\uFF0C\u53EF\u5728 CSS \u6587\u4EF6\u4E2D\u5168\u91CF\u5F15\u5165 <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>\u3002</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>
  348. </code></pre><blockquote><p>\u6CE8\u610F\u8FD9\u79CD\u65B9\u5F0F\u4E0B\u4F60\u4E0D\u9700\u8981\u518D\u5F15\u5165 <code>ant-design-vue/dist/antd.less</code> \u6216 <code>ant-design-vue/dist/antd.css</code> \u4E86\uFF0C\u53EF\u4EE5\u5B89\u5168\u79FB\u9664\u6389\u3002\u4E5F\u4E0D\u9700\u8981\u5F00\u542F babel-plugin-import \u7684 <code>style</code> \u914D\u7F6E\u3002\u901A\u8FC7\u6B64\u65B9\u5F0F\u4E0D\u80FD\u540C\u65F6\u914D\u7F6E\u4E24\u79CD\u53CA\u4EE5\u4E0A\u4E3B\u9898\u3002</p></blockquote><p>\u65B9\u5F0F\u4E8C\uFF1A\u662F\u7528\u5728 <code>webpack.config.js</code> \u4F7F\u7528 <a href="https://github.com/webpack-contrib/less-loader" target="_blank" rel="noopener noreferrer">less-loader</a> \u6309\u9700\u5F15\u5165\uFF1A</p><pre class="language-diff"><code>const { getThemeVariables } = require(&#39;ant-design-vue/dist/theme&#39;);
  349. // webpack.config.js
  350. module.exports = {
  351. <span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> rules: [{
  352. </span><span class="token prefix unchanged"> </span><span class="token line"> test: /\\.less$/,
  353. </span><span class="token prefix unchanged"> </span><span class="token line"> use: [{
  354. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;style-loader&#39;,
  355. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  356. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;css-loader&#39;, // translates CSS into CommonJS
  357. </span><span class="token prefix unchanged"> </span><span class="token line"> }, {
  358. </span><span class="token prefix unchanged"> </span><span class="token line"> loader: &#39;less-loader&#39;, // compiles Less to CSS
  359. </span></span><span class="token inserted-sign inserted"><span class="token prefix inserted">+</span><span class="token line"> options: {
  360. </span><span class="token prefix inserted">+</span><span class="token line"> lessOptions: { // \u5982\u679C\u4F7F\u7528less-loader@5\uFF0C\u8BF7\u79FB\u9664 lessOptions \u8FD9\u4E00\u7EA7\u76F4\u63A5\u914D\u7F6E\u9009\u9879\u3002
  361. </span><span class="token prefix inserted">+</span><span class="token line"> modifyVars: getThemeVariables({
  362. </span><span class="token prefix inserted">+</span><span class="token line"> dark: true, // \u5F00\u542F\u6697\u9ED1\u6A21\u5F0F
  363. </span><span class="token prefix inserted">+</span><span class="token line"> }),
  364. </span><span class="token prefix inserted">+</span><span class="token line"> javascriptEnabled: true,
  365. </span><span class="token prefix inserted">+</span><span class="token line"> },
  366. </span><span class="token prefix inserted">+</span><span class="token line"> },
  367. </span></span><span class="token unchanged"><span class="token prefix unchanged"> </span><span class="token line"> }],
  368. </span><span class="token prefix unchanged"> </span><span class="token line"> }],
  369. </span></span>};
  370. </code></pre><h2 id="\u793E\u533A\u6559\u7A0B-for-antd-react">\u793E\u533A\u6559\u7A0B for Antd React</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>`,38)]))}var g=s(t,[["render",l]]);export{g as default};