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) { chain.output.filename("static/js/[name].[contenthash:8].js"); chain.output.chunkFilename("static/js/[name].[contenthash:8].js"); chain .plugin("MiniCssExtractPlugin") .use(require("mini-css-extract-plugin"), [ { filename: "static/css/[name].[contenthash:8].css", chunkFilename: "static/css/[name].[contenthash:8].css", }, ]); // 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: "/", publicPath: `/v${new Date().getTime()}/`, 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: ["nomadyt.com", "localhost", ".nomadyt.com"], // 允许所有 *.nomadyt.com 子域访问 }, htmlPluginOption: { favicon: path.resolve(__dirname, "..", "src", "images", "youtube.ico"), // 同样处理 favicon 路径 meta: { "cache-control": "no-cache, no-store, must-revalidate", pragma: "no-cache", expires: "0", }, }, 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")); };