150 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
const HtmlWebpackPlugin = require('html-webpack-plugin');
 | 
						|
const VueLoaderPlugin = require('vue-loader/dist/plugin').default;
 | 
						|
const WebpackBar = require('webpackbar');
 | 
						|
const path = require('path');
 | 
						|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 | 
						|
 | 
						|
const babelConfig = {
 | 
						|
  cacheDirectory: true,
 | 
						|
  presets: [
 | 
						|
    [
 | 
						|
      '@babel/preset-env',
 | 
						|
      {
 | 
						|
        targets: {
 | 
						|
          browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'not ie 11'],
 | 
						|
        },
 | 
						|
      },
 | 
						|
    ],
 | 
						|
    '@babel/preset-typescript',
 | 
						|
  ],
 | 
						|
  plugins: [
 | 
						|
    [
 | 
						|
      'babel-plugin-import',
 | 
						|
      {
 | 
						|
        libraryName: 'ant-design-vue',
 | 
						|
        libraryDirectory: '', // default: lib
 | 
						|
        style: true,
 | 
						|
      },
 | 
						|
    ],
 | 
						|
    ['@vue/babel-plugin-jsx', { mergeProps: false, enableObjectSlots: false }],
 | 
						|
    '@babel/plugin-proposal-optional-chaining',
 | 
						|
    '@babel/plugin-transform-object-assign',
 | 
						|
    '@babel/plugin-proposal-object-rest-spread',
 | 
						|
    '@babel/plugin-proposal-export-default-from',
 | 
						|
    '@babel/plugin-proposal-export-namespace-from',
 | 
						|
    '@babel/plugin-proposal-class-properties',
 | 
						|
  ],
 | 
						|
};
 | 
						|
 | 
						|
/** @type {import('webpack').Configuration} */
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  mode: 'development',
 | 
						|
  entry: {
 | 
						|
    app: './examples/index.js',
 | 
						|
  },
 | 
						|
  stats: {
 | 
						|
    warningsFilter: /export .* was not found in/,
 | 
						|
  },
 | 
						|
  module: {
 | 
						|
    rules: [
 | 
						|
      {
 | 
						|
        test: /\.md$/,
 | 
						|
        loader: 'raw-loader',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(vue)$/,
 | 
						|
        loader: 'vue-loader',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(ts|tsx)?$/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: 'babel-loader',
 | 
						|
            options: babelConfig,
 | 
						|
          },
 | 
						|
          {
 | 
						|
            loader: 'ts-loader',
 | 
						|
            options: {
 | 
						|
              transpileOnly: true,
 | 
						|
              appendTsSuffixTo: ['\\.vue$'],
 | 
						|
              happyPackMode: false,
 | 
						|
            },
 | 
						|
          },
 | 
						|
        ],
 | 
						|
        exclude: /node_modules/,
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(js|jsx)$/,
 | 
						|
        loader: 'babel-loader',
 | 
						|
        exclude: /pickr.*js/,
 | 
						|
        options: babelConfig,
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(png|jpg|gif|svg)$/,
 | 
						|
        loader: 'file-loader',
 | 
						|
        options: {
 | 
						|
          name: '[name].[ext]?[hash]',
 | 
						|
        },
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.less$/,
 | 
						|
        use: [
 | 
						|
          { loader: 'style-loader' },
 | 
						|
          {
 | 
						|
            loader: 'css-loader',
 | 
						|
            options: { sourceMap: true },
 | 
						|
          },
 | 
						|
          {
 | 
						|
            loader: 'less-loader',
 | 
						|
            options: {
 | 
						|
              lessOptions: {
 | 
						|
                sourceMap: true,
 | 
						|
                javascriptEnabled: true,
 | 
						|
              },
 | 
						|
            },
 | 
						|
          },
 | 
						|
        ],
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.css$/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: MiniCssExtractPlugin.loader,
 | 
						|
            options: {},
 | 
						|
          },
 | 
						|
          'css-loader',
 | 
						|
        ],
 | 
						|
      },
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  resolve: {
 | 
						|
    alias: {
 | 
						|
      'ant-design-vue/es': path.join(__dirname, './components'),
 | 
						|
      'ant-design-vue': path.join(__dirname, './components'),
 | 
						|
      vue$: 'vue/dist/vue.runtime.esm-bundler.js',
 | 
						|
    },
 | 
						|
    extensions: ['.ts', '.tsx', '.js', '.jsx', '.vue', '.md'],
 | 
						|
  },
 | 
						|
  devServer: {
 | 
						|
    historyApiFallback: {
 | 
						|
      rewrites: [{ from: /./, to: '/index.html' }],
 | 
						|
    },
 | 
						|
    hot: true,
 | 
						|
    open: true,
 | 
						|
  },
 | 
						|
  devtool: 'inline-cheap-module-source-map',
 | 
						|
  plugins: [
 | 
						|
    new MiniCssExtractPlugin({
 | 
						|
      filename: '[name].css',
 | 
						|
    }),
 | 
						|
    new HtmlWebpackPlugin({
 | 
						|
      template: 'examples/index.html',
 | 
						|
      filename: 'index.html',
 | 
						|
      inject: true,
 | 
						|
    }),
 | 
						|
    new VueLoaderPlugin(),
 | 
						|
    new WebpackBar(),
 | 
						|
  ],
 | 
						|
};
 |