美文网首页
vue-cli3中vant字体库改为本地引入

vue-cli3中vant字体库改为本地引入

作者: AaronZ_dd7f | 来源:发表于2020-08-29 09:09 被阅读0次

    内网项目无法引用外部cdn资源,所以需要将vant的字体库改为本地引入
    相关插件:"less-loader": "^7.0.0","vant": "^2.10.3",

    1. 确保vant的样式是按需加载且直接引用less文件
    // babel.config.js
      plugins: [
        ['import', {
          libraryName: 'vant',
          libraryDirectory: 'es',
          style: (name) => `${name}/style/less`,
        }, 'vant']
    
    1. vue.config.js配置
    const path = require('path');
    const fs = require('fs');
    module.exports = {
      // ...
      css: {
        loaderOptions: {
          less:{
            additionalData: (content, loaderContext) => {
              const { resourcePath, rootContext } = loaderContext;
              const relativePath = path.relative(rootContext, resourcePath);
              // 如果是windows,这边地址应该为'node_modules\\vant\\es\\icon\\index.less'
              if(relativePath === 'node_modules/vant/es/icon/index.less') {
                // 获取@vant/icons/src/index.less中的less文件
                const iconIndexLess = fs.readFileSync('node_modules/@vant/icons/src/index.less').toString()
                // 将获取的内容中,字体库的地址改为本地引用
                const newIconIndexLess = iconIndexLess.replace(/https:\/\/img.yzcdn.cn\/vant\//g, '~@vant/icons/src/')
                // 将icons/src/index.less中对于@vant/icons/src/index.less的引入替换为刚刚更新的newIconIndexLess
                return content.replace(`@import '~@vant/icons/src/index.less';`, newIconIndexLess)
              }
              return content
            }
          }
        }
      }
      // ...
    }
    

    好了现在重新启动下项目,看看是不是改变了

    效果

    相关文章

      网友评论

          本文标题:vue-cli3中vant字体库改为本地引入

          本文链接:https://www.haomeiwen.com/subject/xmprsktx.html