webpack.config.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const TerserPlugin = require("terser-webpack-plugin");
  2. const webpack = require("webpack");
  3. const path = require("path");
  4. const pkg = require("./package.json");
  5. // 判断是否启用 TQ_SDK
  6. const isTQ_SDK = process.env.TQ_SDK === 'true';
  7. // 判断是否是开发环境
  8. const isDev = process.env.NODE_ENV === 'development';
  9. // 根据 TQ_SDK 和开发环境动态设置文件名
  10. let outputFilename;
  11. if (isTQ_SDK) {
  12. outputFilename = `[name]-tqsdk.${pkg.version}.js`;
  13. } else {
  14. outputFilename = `[name].${pkg.version}.js`
  15. }
  16. const plugins = [
  17. // 注入环境变量
  18. new webpack.DefinePlugin({
  19. 'process.env.TQ_SDK': JSON.stringify(process.env.TQ_SDK || 'false')
  20. })
  21. ];
  22. // 如果不是 TQ_SDK 模式,忽略 tqsdk 相关文件
  23. if (!isTQ_SDK) {
  24. plugins.push(
  25. new webpack.IgnorePlugin({
  26. resourceRegExp: /^\.\.\/lib\/tqsdk/
  27. })
  28. );
  29. }
  30. module.exports = {
  31. entry: {
  32. rywxsdk: "./index.js",
  33. },
  34. experiments: {
  35. outputModule: true,
  36. },
  37. output: {
  38. filename: outputFilename,
  39. path: path.resolve(__dirname, "dist"),
  40. library: {
  41. type: "module",
  42. },
  43. },
  44. resolve: {
  45. fallback: {
  46. "crypto": false
  47. }
  48. },
  49. plugins: plugins,
  50. optimization: {
  51. minimize: true, // 开发环境不压缩,加快构建速度
  52. minimizer: [
  53. new TerserPlugin({
  54. terserOptions: {
  55. format: {
  56. comments: false,
  57. },
  58. },
  59. extractComments: false,
  60. }),
  61. ],
  62. },
  63. };