天天看點

nuxt定制vant主題

1、npm install babel-plugin-import less less-loader path -D

注意:less-loader版本為5.0.0

2、plugin/vant-ui.js

import Vue from 'vue'
import {Toast } from 'vant'
Vue.use(Toast)
// 将所有 Toast 的展示時長設定為 2000 毫秒
Toast.setDefaultOptions({ duration: 3000 });
Vue.prototype.$toast = Toast;

           

3、在nuxt.config.js配置plugins,引入vant

module.exports = {
  plugins: ['~/plugins/vant-ui.js'] 
}
           

4. 在nuxt.config.js配置babel

module.exports = {
 build: {
   // 添加這個是關鍵,添加後babel才會處理依賴包vant裡面的代碼
   transpile: [ /vant.*?less/ ], 
   babel: {
     plugins: [
       ['import', {
         libraryName: 'vant',
         "style": (name) => {
           return `${name}/style/less.js`
         }
       }, 'vant']
     ],
   },
 }
}
           

5.定制主題

a.建立vantVar.less

@toast-border-radius:18px;
           

b.在nuxt.config.js

const path = require("path");
cosnt resolve = (dir) => path.join(__dirname, dir);
module.exports = {
  build: {
    extend(config) {
        config.module.rules.push({
        test: /\.less$/,
        use: [{
            loader: "less-loader",
            options: {
            javascriptEnabled: true, // 開啟 Less 行内 JavaScript 支援
            modifyVars: {
                // 直接覆寫變量
                hack: `true; @import "${resolve(
                    "./assets/less/vantVar.less"
                )}";`
            }
            }
        }]
        });
    },
  }
}