Load ruffle
This commit is contained in:
parent
25de264abb
commit
b46de85926
4 changed files with 50 additions and 2 deletions
40
build/copy_plugin.js
Normal file
40
build/copy_plugin.js
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
import serveStatic from 'serve-static'
|
||||||
|
import { resolve } from 'node:path'
|
||||||
|
import { cp } from 'node:fs/promises'
|
||||||
|
|
||||||
|
const getPrefix = s => {
|
||||||
|
const padEnd = s.endsWith('/') ? s : s + '/'
|
||||||
|
return padEnd.startsWith('/') ? padEnd : '/' + padEnd
|
||||||
|
}
|
||||||
|
|
||||||
|
const copyPlugin = ({ inUrl, inFs }) => {
|
||||||
|
const prefix = getPrefix(inUrl)
|
||||||
|
const subdir = prefix.slice(1)
|
||||||
|
let copyTarget
|
||||||
|
const handler = serveStatic(inFs)
|
||||||
|
|
||||||
|
return [{
|
||||||
|
name: 'copy-plugin-serve',
|
||||||
|
apply: 'serve',
|
||||||
|
configureServer (server) {
|
||||||
|
server.middlewares.use(prefix, handler)
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
name: 'copy-plugin-build',
|
||||||
|
apply: 'build',
|
||||||
|
configResolved (config) {
|
||||||
|
copyTarget = resolve(config.root, config.build.outDir, subdir)
|
||||||
|
},
|
||||||
|
closeBundle: {
|
||||||
|
order: 'post',
|
||||||
|
sequential: true,
|
||||||
|
async handler () {
|
||||||
|
console.log(`Copying '${inFs}' to ${copyTarget}...`)
|
||||||
|
await cp(inFs, copyTarget, { recursive: true })
|
||||||
|
console.log('Done.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default copyPlugin
|
||||||
|
|
@ -115,6 +115,7 @@
|
||||||
"sass-loader": "13.3.3",
|
"sass-loader": "13.3.3",
|
||||||
"selenium-server": "3.141.59",
|
"selenium-server": "3.141.59",
|
||||||
"semver": "7.7.1",
|
"semver": "7.7.1",
|
||||||
|
"serve-static": "1.16.2",
|
||||||
"serviceworker-webpack5-plugin": "2.0.0",
|
"serviceworker-webpack5-plugin": "2.0.0",
|
||||||
"shelljs": "0.8.5",
|
"shelljs": "0.8.5",
|
||||||
"sinon": "15.2.0",
|
"sinon": "15.2.0",
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
const createRuffleService = () => {
|
const createRuffleService = () => {
|
||||||
let ruffleInstance = null
|
let ruffleInstance = null
|
||||||
|
|
||||||
const getRuffle = () => new Promise((resolve, reject) => {
|
const getRuffle = async () => new Promise((resolve, reject) => {
|
||||||
if (ruffleInstance) {
|
if (ruffleInstance) {
|
||||||
resolve(ruffleInstance)
|
resolve(ruffleInstance)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ruffle needs these to be set before it's loaded
|
// Ruffle needs these to be set before it's loaded
|
||||||
// https://github.com/ruffle-rs/ruffle/issues/3952
|
// https://github.com/ruffle-rs/ruffle/issues/3952
|
||||||
window.RufflePlayer = {}
|
window.RufflePlayer = {}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import { fileURLToPath } from 'node:url'
|
import { fileURLToPath } from 'node:url'
|
||||||
import { dirname, resolve } from 'node:path'
|
import { dirname, resolve } from 'node:path'
|
||||||
|
import { readFile } from 'node:fs/promises'
|
||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||||
import { VitePWA } from 'vite-plugin-pwa'
|
import { VitePWA } from 'vite-plugin-pwa'
|
||||||
import { devSwPlugin, buildSwPlugin, swMessagesPlugin } from './build/sw_plugin.js'
|
import { devSwPlugin, buildSwPlugin, swMessagesPlugin } from './build/sw_plugin.js'
|
||||||
|
import copyPlugin from './build/copy_plugin.js'
|
||||||
|
|
||||||
const getLocalDevSettings = async () => {
|
const getLocalDevSettings = async () => {
|
||||||
try {
|
try {
|
||||||
|
|
@ -76,7 +78,11 @@ export default defineConfig(async ({ command }) => {
|
||||||
vueJsx(),
|
vueJsx(),
|
||||||
devSwPlugin({ swSrc, swDest }),
|
devSwPlugin({ swSrc, swDest }),
|
||||||
buildSwPlugin({ swSrc, swDest }),
|
buildSwPlugin({ swSrc, swDest }),
|
||||||
swMessagesPlugin()
|
swMessagesPlugin(),
|
||||||
|
copyPlugin({
|
||||||
|
inUrl: '/static/ruffle',
|
||||||
|
inFs: resolve(projectRoot, 'node_modules/@ruffle-rs/ruffle')
|
||||||
|
})
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue