text: const webpack = require('webpack');
  const path = require('path');
  function resolve(dir) {
    return path.join(__dirname, dir);
  }
  
  module.exports = {
    // 生产环境打包不输出 map
    productionSourceMap: false,
    devServer: {
      disableHostCheck: true,
      port: process.env.DEV_SERVER_PORT || 8080,
      proxy: {
        '^/api': {
          target: 'http://localhost:3000',
          changeOrigin: true,
          pathRewrite: {
            '^/api': '/',
          },
        },
      },
    },
    pwa: {
      name: 'Zhou Music',
      iconPaths: {
        favicon32: 'img/icons/favicon-32x32.png',
      },
      themeColor: '#ffffff00',
      manifestOptions: {
        background_color: '#335eea',
      },
      // workboxOptions: {
      //   swSrc: "dev/sw.js",
      // },
    },
    pages: {
      index: {
        entry: 'src/main.js',
        template: 'public/index.html',
        filename: 'index.html',
        title: 'Zhou Music',
        chunks: ['main', 'chunk-vendors', 'chunk-common', 'index'],
      },
    },
    chainWebpack(config) {
      config.module.rules.delete('svg');
      config.module.rule('svg').exclude.add(resolve('src/assets/icons')).end();
      config.module
        .rule('icons')
        .test(/\.svg$/)
        .include.add(resolve('src/assets/icons'))
        .end()
        .use('svg-sprite-loader')
        .loader('svg-sprite-loader')
        .options({
          symbolId: 'icon-[name]',
        })
        .end();
      // LimitChunkCountPlugin 可以通过合并块来对块进行后期处理。用以解决 chunk 包太多的问题
      config.plugin('chunkPlugin').use(webpack.optimize.LimitChunkCountPlugin, [
        {
          maxChunks: 3,
          minChunkSize: 10_000,
        },
      ]);
    },
    // 添加插件的配置
    pluginOptions: {
      // electron-builder的配置文件
      electronBuilder: {
        nodeIntegration: true,
        externals: [
          '@unblockneteasemusic/server',
          '@unblockneteasemusic/server/src/consts',
        ],
        builderOptions: {
          productName: 'YesPlayMusic',
          copyright: 'Copyright © YesPlayMusic',
          // compression: "maximum", // 机器好的可以打开，配置压缩，开启后会让 .AppImage 格式的客户端启动缓慢
          asar: true,
          publish: [
            {
              provider: 'github',
              owner: 'qier222',
              repo: 'YesPlayMusic',
              vPrefixedTagName: true,
              releaseType: 'draft',
            },
          ],
          directories: {
            output: 'dist_electron',
          },
          mac: {
            target: [
              {
                target: 'dmg',
                arch: ['x64', 'arm64', 'universal'],
              },
            ],
            artifactName: '${productName}-${os}-${version}-${arch}.${ext}',
            category: 'public.app-category.music',
            darkModeSupport: true,
          },
          win: {
            target: [
              {
                target: 'portable',
                arch: ['x64'],
              },
              {
                target: 'nsis',
                arch: ['x64'],
              },
            ],
            publisherName: 'YesPlayMusic',
            icon: 'build/icons/icon.ico',
            publish: ['github'],
          },
          linux: {
            target: [
              {
                target: 'AppImage',
                arch: ['x64'],
              },
              {
                target: 'tar.gz',
                arch: ['x64', 'arm64'],
              },
              {
                target: 'deb',
                arch: ['x64', 'armv7l', 'arm64'],
              },
              {
                target: 'rpm',
                arch: ['x64'],
              },
              {
                target: 'snap',
                arch: ['x64'],
              },
              {
                target: 'pacman',
                arch: ['x64'],
              },
            ],
            category: 'Music',
            icon: './build/icon.icns',
          },
          dmg: {
            icon: 'build/icons/icon.icns',
          },
          nsis: {
            oneClick: true,
            perMachine: true,
            deleteAppDataOnUninstall: true,
          },
        },
        // 主线程的配置文件
        chainWebpackMainProcess: config => {
          config.plugin('define').tap(args => {
            args[0]['IS_ELECTRON'] = true;
            return args;
          });
          config.resolve.alias.set(
            'jsbi',
            path.join(__dirname, 'node_modules/jsbi/dist/jsbi-cjs.js')
          );
        },
        // 渲染线程的配置文件
        chainWebpackRendererProcess: config => {
          // 渲染线程的一些其他配置
          // Chain webpack config for electron renderer process only
          // The following example will set IS_ELECTRON to true in your app
          config.plugin('define').tap(args => {
            args[0]['IS_ELECTRON'] = true;
            return args;
          });
        },
        // 主入口文件
        // mainProcessFile: 'src/main.js',
        // mainProcessArgs: []
      },
    },
  };
  