mirror of
https://github.com/storytold/storyteller-bevy.git
synced 2026-10-28 08:58:07 +00:00
Fix studio-web build issues (#17)
* Add plugins for `wasm` and `top-level-await` to Vite config * Avoid bundling dependencies * Add external dependencies to project-level `package.json` manifests
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "@storyteller/framework",
|
"name": "@storyteller/framework",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"@storyteller/utility": "0.0.1",
|
||||||
|
"lit": "^2.8.0"
|
||||||
|
},
|
||||||
"main": "./index.js",
|
"main": "./index.js",
|
||||||
"module": "./index.mjs",
|
"module": "./index.mjs",
|
||||||
"typings": "./index.d.ts"
|
"typings": "./index.d.ts"
|
||||||
|
|||||||
@@ -35,7 +35,10 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
// External packages that should not be bundled into your library.
|
// External packages that should not be bundled into your library.
|
||||||
external: [],
|
external: [
|
||||||
|
"@storyteller/utility",
|
||||||
|
"lit",
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -2,7 +2,9 @@
|
|||||||
"name": "@storyteller/source",
|
"name": "@storyteller/source",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {},
|
"scripts": {
|
||||||
|
"link-packages": "node ./scripts/link-packages.cjs"
|
||||||
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nx/js": "16.9.1",
|
"@nx/js": "16.9.1",
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
const cp = require("child_process");
|
||||||
|
const path = require("path");
|
||||||
|
const util = require("util");
|
||||||
|
let chalk;
|
||||||
|
|
||||||
|
const WS_ROOT = path.resolve(__dirname, "..");
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
chalk = (await import("chalk")).default;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await run("npm", ["link"], { cwd: path.join(WS_ROOT, "dist/studio") });
|
||||||
|
await run("npm", ["link"], { cwd: path.join(WS_ROOT, "dist/utility") });
|
||||||
|
|
||||||
|
await run("npm", ["link", "@storyteller/utility"], { cwd: path.join(WS_ROOT, "dist/framework") });
|
||||||
|
await run("npm", ["link"], { cwd: path.join(WS_ROOT, "dist/framework") });
|
||||||
|
|
||||||
|
await run("npm", ["link", "@storyteller/studio", "@storyteller/framework"], {
|
||||||
|
cwd: path.join(WS_ROOT, "dist/studio-web")
|
||||||
|
});
|
||||||
|
await run("npm", ["link"], { cwd: path.join(WS_ROOT, "dist/studio-web") });
|
||||||
|
} catch (err) {
|
||||||
|
handleError(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} command
|
||||||
|
* @param {readonly string[]} args
|
||||||
|
* @param {import("node:child_process").SpawnOptions} options
|
||||||
|
*
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async function run(command, args, options) {
|
||||||
|
options.shell = true;
|
||||||
|
|
||||||
|
const prompt = !!options.cwd && typeof options.cwd === "string" && options.cwd !== WS_ROOT
|
||||||
|
? `[${path.relative(WS_ROOT, options.cwd)}] >`
|
||||||
|
: `>`;
|
||||||
|
|
||||||
|
console.log(chalk.dim(`${prompt} ${command} ${args.join(" ")}`));
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
cp.spawn(command, args, options)
|
||||||
|
.on("exit", code => {
|
||||||
|
if (code) reject(code)
|
||||||
|
else resolve();
|
||||||
|
})
|
||||||
|
.on("close", code => {
|
||||||
|
if (code) reject(code)
|
||||||
|
else resolve();
|
||||||
|
})
|
||||||
|
.on("error", reject);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {any} err
|
||||||
|
* @returns {never}
|
||||||
|
*/
|
||||||
|
function handleError(err) {
|
||||||
|
if (typeof err === "number") {
|
||||||
|
console.log(`${
|
||||||
|
chalk.bold.redBright.inverse(" ERROR ")
|
||||||
|
} Child process exited with code ${err}`);
|
||||||
|
|
||||||
|
process.exit(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err != null && err instanceof Error) {
|
||||||
|
console.log(`${
|
||||||
|
chalk.bold.redBright.inverse(" ERROR ")
|
||||||
|
} ${err.message}`);
|
||||||
|
|
||||||
|
if (err.stack)
|
||||||
|
console.log(chalk.dim(err.stack));
|
||||||
|
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`${
|
||||||
|
chalk.bold.redBright.inverse(" ERROR ")
|
||||||
|
} Child process threw an exception: ${util.inspect(err)}`);
|
||||||
|
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main();
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@storyteller/studio-web",
|
"name": "@storyteller/studio-web",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"@storyteller/framework": "0.0.1",
|
||||||
|
"@storyteller/studio": "0.0.1",
|
||||||
|
"lit": "^2.8.0"
|
||||||
|
},
|
||||||
"main": "./index.js",
|
"main": "./index.js",
|
||||||
"module": "./index.mjs",
|
"module": "./index.mjs",
|
||||||
"typings": "./index.d.ts",
|
"typings": "./index.d.ts"
|
||||||
"exports": {
|
|
||||||
"./canvas-provider": "./canvas-provider.element.js",
|
|
||||||
"./viewer": "./viewer.element.js"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,12 @@
|
|||||||
"build": {
|
"build": {
|
||||||
"executor": "@nx/vite:build",
|
"executor": "@nx/vite:build",
|
||||||
"outputs": ["{options.outputPath}"],
|
"outputs": ["{options.outputPath}"],
|
||||||
|
"dependsOn": [
|
||||||
|
{
|
||||||
|
"projects": ["studio"],
|
||||||
|
"target": "build:web"
|
||||||
|
}
|
||||||
|
],
|
||||||
"options": {
|
"options": {
|
||||||
"outputPath": "dist/studio-web"
|
"outputPath": "dist/studio-web"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
|
export * from "./lib/canvas-provider.element";
|
||||||
export * from "./lib/viewer.element";
|
export * from "./lib/viewer.element";
|
||||||
|
|||||||
+47
-39
@@ -1,50 +1,58 @@
|
|||||||
/// <reference types='vitest' />
|
/// <reference types='vitest' />
|
||||||
|
import { nxViteTsPaths } from "@nx/vite/plugins/nx-tsconfig-paths.plugin";
|
||||||
import { defineConfig } from "vite";
|
import { defineConfig } from "vite";
|
||||||
import dts from "vite-plugin-dts";
|
import dts from "vite-plugin-dts";
|
||||||
|
import wasm from "vite-plugin-wasm";
|
||||||
|
import topLevelAwait from "vite-plugin-top-level-await";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import { nxViteTsPaths } from "@nx/vite/plugins/nx-tsconfig-paths.plugin";
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
cacheDir: "../node_modules/.vite/studio-web",
|
cacheDir: "../node_modules/.vite/studio-web",
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
nxViteTsPaths(),
|
nxViteTsPaths(),
|
||||||
dts({
|
wasm(),
|
||||||
entryRoot: "src",
|
topLevelAwait(),
|
||||||
tsConfigFilePath: path.join(__dirname, "tsconfig.lib.json"),
|
dts({
|
||||||
skipDiagnostics: true,
|
entryRoot: "src",
|
||||||
}),
|
tsConfigFilePath: path.join(__dirname, "tsconfig.lib.json"),
|
||||||
],
|
skipDiagnostics: true,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
|
||||||
// Uncomment this if you are using workers.
|
// Uncomment this if you are using workers.
|
||||||
// worker: {
|
// worker: {
|
||||||
// plugins: [ nxViteTsPaths() ],
|
// plugins: [ nxViteTsPaths() ],
|
||||||
// },
|
// },
|
||||||
|
|
||||||
// Configuration for building your library.
|
// Configuration for building your library.
|
||||||
// See: https://vitejs.dev/guide/build.html#library-mode
|
// See: https://vitejs.dev/guide/build.html#library-mode
|
||||||
build: {
|
build: {
|
||||||
lib: {
|
lib: {
|
||||||
// Could also be a dictionary or array of multiple entry points.
|
// Could also be a dictionary or array of multiple entry points.
|
||||||
entry: "src/index.ts",
|
entry: "src/index.ts",
|
||||||
name: "studio-web",
|
name: "studio-web",
|
||||||
fileName: "index",
|
fileName: "index",
|
||||||
// Change this to the formats you want to support.
|
// Change this to the formats you want to support.
|
||||||
// Don't forget to update your package.json as well.
|
// Don't forget to update your package.json as well.
|
||||||
formats: ["es", "cjs"],
|
formats: ["es", "cjs"],
|
||||||
},
|
},
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
// External packages that should not be bundled into your library.
|
// External packages that should not be bundled into your library.
|
||||||
external: [],
|
external: [
|
||||||
},
|
"lit",
|
||||||
},
|
"@storyteller/framework",
|
||||||
|
"@storyteller/studio",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
test: {
|
test: {
|
||||||
globals: true,
|
globals: true,
|
||||||
cache: {
|
cache: {
|
||||||
dir: "../node_modules/.vitest",
|
dir: "../node_modules/.vitest",
|
||||||
},
|
},
|
||||||
environment: "jsdom",
|
environment: "jsdom",
|
||||||
include: ["src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
include: ["src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@storyteller/studio",
|
"name": "@storyteller/studio",
|
||||||
"version": "0.1.0",
|
"version": "0.0.1",
|
||||||
"files": [
|
"files": [
|
||||||
"studio_bg.wasm",
|
"studio_bg.wasm",
|
||||||
"studio.js",
|
"studio.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user