可以获取已有的projectId的内容

This commit is contained in:
熊潇 2025-04-03 10:07:59 +08:00
parent 3ac31e4d09
commit 8cdc64797c
6 changed files with 97 additions and 4 deletions

View File

@ -16,12 +16,19 @@
width: 784px; width: 784px;
min-height: 100px; min-height: 100px;
} }
.MenuBar-LogoLink_embedded-Yljpv {
display: none;
}
</style> </style>
</head> </head>
<body> <body>
<div id="root"></div> <div id="root">
<script type="module" src="/src/files/main.ts"></script> <div id="editor"></div>
<div id="actions"></div>
</div>
<script type="module" src="/src/demo2/main.ts"></script>
</body> </body>
</html> </html>

View File

@ -17,6 +17,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@kevisual/router": "0.0.9", "@kevisual/router": "0.0.9",
"@stackblitz/sdk": "^1.11.0",
"@webcontainer/api": "^1.5.3", "@webcontainer/api": "^1.5.3",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",

8
pnpm-lock.yaml generated
View File

@ -11,6 +11,9 @@ importers:
'@kevisual/router': '@kevisual/router':
specifier: 0.0.9 specifier: 0.0.9
version: 0.0.9 version: 0.0.9
'@stackblitz/sdk':
specifier: ^1.11.0
version: 1.11.0
'@webcontainer/api': '@webcontainer/api':
specifier: ^1.5.3 specifier: ^1.5.3
version: 1.5.3 version: 1.5.3
@ -450,6 +453,9 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@stackblitz/sdk@1.11.0':
resolution: {integrity: sha512-DFQGANNkEZRzFk1/rDP6TcFdM82ycHE+zfl9C/M/jXlH68jiqHWHFMQURLELoD8koxvu/eW5uhg94NSAZlYrUQ==}
'@tailwindcss/node@4.0.16': '@tailwindcss/node@4.0.16':
resolution: {integrity: sha512-T6IK79hoCFScxD5tRxWMtwqwSs4sT81Vw+YbzL7RZD0/Ndm4y5kboV7LdQ97YGH6udoOZyVT/uEfrnU2L5Nkog==} resolution: {integrity: sha512-T6IK79hoCFScxD5tRxWMtwqwSs4sT81Vw+YbzL7RZD0/Ndm4y5kboV7LdQ97YGH6udoOZyVT/uEfrnU2L5Nkog==}
@ -1360,6 +1366,8 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.34.8': '@rollup/rollup-win32-x64-msvc@4.34.8':
optional: true optional: true
'@stackblitz/sdk@1.11.0': {}
'@tailwindcss/node@4.0.16': '@tailwindcss/node@4.0.16':
dependencies: dependencies:
enhanced-resolve: 5.18.1 enhanced-resolve: 5.18.1

0
src/demo2/index.ts Normal file
View File

77
src/demo2/main.ts Normal file
View File

@ -0,0 +1,77 @@
import sdk from '@stackblitz/sdk';
const main = async () => {
const vm = await sdk.embedProject(
'editor',
{
files: {
'index.html': `<h1>Hello World</h1>`,
'style.css': `body { background-color: #f0f0f0; }`,
'.pkgignore': `node_modules`,
// '.env': `TEMP_TOKEN=1234567890`,
'package.json': `{
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint ."
},
"dependencies": {
"vite": "^6.0.0",
"@kevisual/envision-cli": "^0.0.32"
},
"startCommand": "pnpm i && pnpm dev"
}`,
},
title: 'Hello World',
template: 'node',
settings: {},
},
{
view: 'preview',
clickToLoad: true,
height: '500px',
width: '800px',
// hideDevTools: true,
// hideExplorer: true,
// hideNavigation: true,
},
);
await vm.applyFsDiff({
create: {
// '.env': `TEMP_TOKEN=1234567890`,
'b.txt': `#!/bin/jsh
echo "Hello, World!"
`,
},
destroy: [],
});
const iframe = document.querySelector('iframe');
// @ts-ignore
window.vm = vm;
iframe?.addEventListener('load', () => {
// vm.postMessage('hello', '*');
const noTagLinks = document.createElement('style');
noTagLinks.innerHTML = `
.MenuBar-LogoLink_embedded-Yljpv {
display: none;
}
`;
iframe?.contentWindow?.document.appendChild(noTagLinks);
console.log(iframe?.contentWindow?.document);
});
};
// main();
// const actions = document.getElementById('actions');
// actions?.addEventListener('click', () => {
// main();
// });
const main2 = async () => {
const vm = await sdk.embedProjectId('editor', 'sb1-j7dqwtjx');
setTimeout(async () => {
// vm.postMessage('hello', '*');
const res = await vm.getFsSnapshot();
console.log(res);
}, 1000);
};
main2();

View File

@ -31,8 +31,8 @@ export default defineConfig({
port: 7004, port: 7004,
host: '0.0.0.0', host: '0.0.0.0',
headers: { headers: {
'Cross-Origin-Embedder-Policy': 'require-corp', // 'Cross-Origin-Embedder-Policy': 'require-corp',
'Cross-Origin-Opener-Policy': 'same-origin', // 'Cross-Origin-Opener-Policy': 'same-origin',
}, },
proxy: { proxy: {
'/api': { '/api': {