145 lines
3.8 KiB
JavaScript
145 lines
3.8 KiB
JavaScript
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]",
|
||
},
|
||
},
|
||
},
|
||
// customRoutes: {
|
||
// // "页面路径": "自定义路由"
|
||
// "/pages/index/index": "/index",
|
||
// // '/pages/detail/index': ['/detail'], // 可以通过数组为页面配置多个自定义路由
|
||
// "pages/my/index": "/my",
|
||
// "pages/meetup/index": "/meetup",
|
||
// "pages/meetup/Detail/index": "/detail",
|
||
// },
|
||
router: {
|
||
// basename: '/myapp',
|
||
mode: "hash", // 或者是 'browser'
|
||
},
|
||
// 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"));
|
||
};
|