日渐肥胖的左日渐肥胖的左
首页
博客
  • wxml2canvas二开
  • VForm获取表单控件数据域
  • webpack常用Loader示例
  • 引入
  • 配置
  • 接口返回值规范
  • 计划
  • 版本记录
  • 我的项目

    • 前端API生成器
    • wxml2Canvas优化版
    • IO一锅炖 - 企业级Node服务
  • 常用工具

    • 语雀 - 笔记
    • Tailwind CSS
    • Pixso - 设计
    • smallpdf - PDF压缩
首页
博客
  • wxml2canvas二开
  • VForm获取表单控件数据域
  • webpack常用Loader示例
  • 引入
  • 配置
  • 接口返回值规范
  • 计划
  • 版本记录
  • 我的项目

    • 前端API生成器
    • wxml2Canvas优化版
    • IO一锅炖 - 企业级Node服务
  • 常用工具

    • 语雀 - 笔记
    • Tailwind CSS
    • Pixso - 设计
    • smallpdf - PDF压缩
  • JavaScript

    • wxml2canvas二开
    • VForm获取表单控件数据域
    • webpack常用Loader示例

webpack常用Loader示例

vue-loader

const { VueLoaderPlugin } = require('vue-loader');

module.exports = {
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
    ]
  },
  plugins: [
    new VueLoaderPlugin(),
  ]
};

ts-loader

module.exports = {
  module: {
    rules: [
      {
        test: /\.ts$/,
        loader: 'ts-loader',
        exclude: /node_modules/,
        options: {
          appendTsSuffixTo: [/\.vue$/], // 如果是vue项目需要设置
        },
      },
    ]
  },
};

string-replace-loader(构建前将文件进行重写)

module.exports = {
  module: {
    rules: [
      {
        test: /index.js$/i,
        use: {
          loader: 'string-replace-loader',
          options: {
            search: 'import.meta.globEager',
            replace: '[] //',
            flags: 'g'
          }
        }
      },
    ]
  },
};

style-loader、css-loader、sass-loader

module.exports = {
  module: {
    rules: [
      {
        test: /.scss$/,
        use: {
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              url: false // 资源解析失败不报错
            }
          },
          {
            loader: 'sass-loader',
            options: {
              additionalData: ` // 会给每个文件都加入字符串中的内容
                @use "@/styles/global.scss";
                $--color-primary: #409EFF;
              `
            }
          }
        }
      },
    ]
  },
};

svg-sprite-loader

module.exports = {
  module: {
    rules: [
      {
        test: /.svg$/,
        loader: 'svg-sprite-loader',
        include: path.resolve(__dirname, 'src/icons'),
        options: {
          symbolId: (path, query) => { // 生成symbolId,可以是字符串或者函数
            const pathSplitList = path.split('\\')
            const fileDirIndex = pathSplitList.findIndex(item => item === 'icons')
            const nameSplitList = pathSplitList.slice(fileDirIndex + 1)
            const lastFirstIndex = nameSplitList.length -1
            const firstHalf = nameSplitList.slice(0, lastFirstIndex)
            const secondHalf = nameSplitList.slice(lastFirstIndex)
            return `${firstHalf.join('-')}-${secondHalf[0].replace('.svg', '')}`
          }
        }
      },
    ]
  },
};
Prev
VForm获取表单控件数据域