Files
gitlab-instance-0a899031_vi…/config/index.js
2025-12-18 01:54:18 -06:00

149 lines
4.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import path from "path";
// const { GenerateSW } = require("workbox-webpack-plugin");
import favicon from './images/planet.ico';
const WebpackObfuscator = require("webpack-obfuscator");
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") {
// js代码混淆
chain.plugin("obfuscator").use(WebpackObfuscator, [
{
rotateStringArray: true,
stringArray: true,
stringArrayThreshold: 0.5, // 降低比例,提高速度
compact: true,
controlFlowFlattening: false, // 关闭,提高速度
deadCodeInjection: false, // 关闭,提高速度
debugProtection: false,
disableConsoleOutput: true,
selfDefending: false, // 关闭,提高速度
simplify: true, // 开启简化,提高性能
// 禁用对 async/await 的转换
target: "browser", // 或设置为适合目标环境的 ECMAScript 版本
disableOptimizations: true, // 禁用某些优化来避免处理 async/await
},
["**/*.js", "!node_modules/**"], // 避免对 node_modules 进行混淆
]);
}
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: ["nomadro.com", "localhost", ".nomadro.com","hackrobot.cn",".hackrobot.cn",".ngrok-free.app"], // 允许所有 *.nomadyt.com 子域访问
},
htmlPluginOption: {
favicon: path.resolve(__dirname, "..", "src", "images", "avatar.jpg"), // 同样处理 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"));
};