Skip to content

Commit c3720ce

Browse files
Williangalvanipatrickelectric
authored andcommitted
frontend: vite.config: don't include hashes on draco files
1 parent 5147681 commit c3720ce

1 file changed

Lines changed: 41 additions & 1 deletion

File tree

core/frontend/vite.config.js

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,29 @@ export default defineConfig(({ command, mode }) => {
8686
deleteOriginFile: true,
8787
filter: /\.(js|css|json|svg|txt|xml|wasm|glb)$/i,
8888
}),
89+
// Fix Draco imports in dev server
90+
{
91+
name: 'draco-dev-fix',
92+
apply: 'serve',
93+
configureServer(server) {
94+
server.middlewares.use((req, res, next) => {
95+
if (req.url?.includes('/node_modules/three/examples/jsm/libs/draco/')) {
96+
const fs = require('fs')
97+
const filePath = path.join(__dirname, req.url)
98+
if (fs.existsSync(filePath)) {
99+
const ext = path.extname(req.url)
100+
if (ext === '.wasm') res.setHeader('Content-Type', 'application/wasm')
101+
else if (ext === '.js') res.setHeader('Content-Type', 'application/javascript')
102+
res.end(fs.readFileSync(filePath))
103+
return
104+
}
105+
}
106+
next()
107+
})
108+
}
109+
}
89110
],
90-
assetsInclude: ['**/*.gif', '**/*.glb', '**/*.png', '**/*.svg'],
111+
assetsInclude: ['**/*.gif', '**/*.glb', '**/*.png', '**/*.svg', '**/assets/ArduPilot-Parameter-Repository**.json', '**/*.msg', "**/three/examples/jsm/libs/draco/*"],
91112
resolve: {
92113
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
93114
alias: {
@@ -100,6 +121,22 @@ export default defineConfig(({ command, mode }) => {
100121
input: {
101122
main: path.resolve(__dirname, 'index.html'),
102123
},
124+
output: {
125+
assetFileNames: (assetInfo) => {
126+
// List of file patterns to excluded from hashing
127+
const noHashPatterns = [
128+
/ArduPilot-Parameter-Repository.*\.json$/,
129+
/three\/examples\/jsm\/libs\/draco\//
130+
];
131+
132+
if (assetInfo.name) {
133+
if (noHashPatterns.some(pattern => pattern.test(assetInfo.name))) {
134+
return `assets/[name][extname]`;
135+
}
136+
}
137+
return `assets/[name]-[hash][extname]`;
138+
}
139+
}
103140
},
104141
},
105142
define: {
@@ -108,6 +145,9 @@ export default defineConfig(({ command, mode }) => {
108145
},
109146
server: {
110147
port: 8080,
148+
fs: {
149+
allow: ['..', './node_modules']
150+
},
111151
proxy: {
112152
'^/status': {
113153
target: SERVER_ADDRESS,

0 commit comments

Comments
 (0)