import path from 'path' const { GenerateSW } = require("workbox-webpack-plugin"); const config = { projectName: "cityh5", date: "2023-12-2", designWidth: 750, deviceRatio: { 640: 2.34 / 2, 750: 1, 828: 1.81 / 2, }, sourceRoot: "src", outputRoot: "dist", plugins: [], defineConstants: {}, copy: { patterns: [], options: {}, }, framework: "react", compiler: "webpack5", cache: { enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache }, h5: { webpackChain(chain) { if ( process.env.NODE_ENV === "production" && !chain.plugins.has("workbox") ) { chain.plugin("workbox").use(GenerateSW, [ { clientsClaim: true, skipWaiting: true, maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, // 10MB runtimeCaching: [ { urlPattern: /.*\.(?:png|jpg|jpeg|svg|gif|ico)/, handler: "CacheFirst", options: { cacheName: "images-cache", expiration: { maxEntries: 50, maxAgeSeconds: 30 * 24 * 60 * 60, }, }, }, { urlPattern: /.*\.(?:js|css)/, handler: "StaleWhileRevalidate", options: { cacheName: "static-resources", expiration: { maxEntries: 50, maxAgeSeconds: 7 * 24 * 60 * 60, }, }, }, ], }, ]); } chain.module .rule("markdown") .test(/\.md$/) .use("raw-loader") .loader("raw-loader") .end(); chain.module .rule("ico") .test(/\.ico$/) .use("file-loader") .loader("file-loader") .options({ name: "static/images/[name].[ext]", }); }, esnextModules: ["taro-ui"], publicPath: "/", staticDirectory: "static", postcss: { autoprefixer: { enable: true, config: {}, }, cssModules: { enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true config: { namingPattern: "module", // 转换模式,取值为 global/module generateScopedName: "[name]__[local]___[hash:base64:5]", }, }, }, router: { // basename: '/myapp', mode: "browser", // 或者是 'hash' customRoutes: { // "页面路径": "自定义路由" "/pages/index/index": "/", "/pages/book/index": "/book", // '/pages/detail/index': ['/detail'], // 可以通过数组为页面配置多个自定义路由 // "pages/my/index": "/my", // "pages/meetup/index": "/meetup", // "pages/meetup/Detail/index": "/detail", }, }, // defineConstants: { // HOST: '"/api"' // }, devServer: { // host: 'nomad.hackrobot.cn', // 替换为您的域名 // port: 10087, // 选择一个适当的端口号 proxy: { "/api/": { target: JSON.parse('"http://localhost:8700"'), //本地调试端口 pathRewrite: { "^/api/": "/", }, changeOrigin: true, }, }, // 允许特定域名访问 allowedHosts: [ // 'bot.hackrobot.cn' "nomadyt.com", ], }, htmlPluginOption: { favicon: path.resolve(__dirname, "..", "src", "images", "youtube.ico"), // 同样处理 favicon 路径 }, target: ["web", "browserslist:> 0.25%, not dead"], }, }; module.exports = function (merge) { if (process.env.NODE_ENV === "development") { return merge({}, config, require("./dev")); } return merge({}, config, require("./prod")); };