117 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
import stackblitzSdk from "@stackblitz/sdk";
 | 
						|
 | 
						|
export const mainCode = `
 | 
						|
import { createApp } from 'vue';
 | 
						|
import App from './App.vue';
 | 
						|
import './index.css';
 | 
						|
// import Layui from '@layui/layui-vue'
 | 
						|
// import '@layui/layui-vue/lib/index.css';
 | 
						|
 | 
						|
const app = createApp(App);
 | 
						|
// app.use(Layui);
 | 
						|
app.mount('#app');`;
 | 
						|
 | 
						|
export const styleCode = `#app { padding: 20px; }`;
 | 
						|
 | 
						|
export const htmlCode = `
 | 
						|
<!DOCTYPE html>
 | 
						|
<html lang="en">
 | 
						|
<head>
 | 
						|
  <meta charset="UTF-8" />
 | 
						|
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
						|
  <title>Vite App</title>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
  <div id="app"></div>
 | 
						|
  <script type="module" src="/src/main.js"></script>
 | 
						|
</body>
 | 
						|
</html>
 | 
						|
`;
 | 
						|
 | 
						|
export const stackblitzRc = `
 | 
						|
  {
 | 
						|
    "installDependencies": false,
 | 
						|
    "startCommand": "turbo && turbo dev"
 | 
						|
  }
 | 
						|
`;
 | 
						|
 | 
						|
export const viteConfigCode = `
 | 
						|
  import path from 'path'
 | 
						|
  import { defineConfig } from 'vite';
 | 
						|
  import vue from '@vitejs/plugin-vue';
 | 
						|
  import vueJsx from '@vitejs/plugin-vue-jsx';
 | 
						|
  import Components from 'unplugin-vue-components/vite';
 | 
						|
  import AutoImport from 'unplugin-auto-import/vite';
 | 
						|
  import { LayuiVueResolver } from 'unplugin-vue-components/resolvers';
 | 
						|
 | 
						|
  const pathSrc = path.resolve(process.cwd(), 'src')
 | 
						|
 | 
						|
  export default defineConfig({
 | 
						|
    plugins: [
 | 
						|
      vue(), 
 | 
						|
      vueJsx(),
 | 
						|
      AutoImport({
 | 
						|
        // 自动导入 vue 相关函数
 | 
						|
        imports: ['vue',],
 | 
						|
        // 自动导入 layer-vue 相关函数
 | 
						|
        resolvers: [LayuiVueResolver()],
 | 
						|
        dts: path.resolve(pathSrc, 'auto-imports.d.ts'),
 | 
						|
      }),
 | 
						|
      Components({
 | 
						|
        // 自动解析 layui-vue 组件
 | 
						|
        resolvers: [LayuiVueResolver({ resolveIcons: true })],
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
`;
 | 
						|
 | 
						|
export const packageJSONCode = JSON.stringify(
 | 
						|
  {
 | 
						|
    name: "layui-vue-demo",
 | 
						|
    version: "0.0.1",
 | 
						|
    private: true,
 | 
						|
    type: "module",
 | 
						|
    scripts: {
 | 
						|
      dev: "vite",
 | 
						|
      build: "vite build",
 | 
						|
      preview: "vite preview",
 | 
						|
    },
 | 
						|
    dependencies: {
 | 
						|
      vue: "^3.2.0",
 | 
						|
      "@layui/layui-vue": "latest",
 | 
						|
    },
 | 
						|
    devDependencies: {
 | 
						|
      vite: "^2.9.8",
 | 
						|
      "@vue/compiler-sfc": "^3.2.0",
 | 
						|
      "@vitejs/plugin-vue": "^2.3.2",
 | 
						|
      "@vitejs/plugin-vue-jsx": "^1.3.10",
 | 
						|
      "unplugin-auto-import": "0.11.1",
 | 
						|
      "unplugin-vue-components": "0.22.4",
 | 
						|
    },
 | 
						|
  },
 | 
						|
  null,
 | 
						|
  2
 | 
						|
);
 | 
						|
 | 
						|
export const openStackblitz = (content: string) => {
 | 
						|
  stackblitzSdk.openProject(
 | 
						|
    {
 | 
						|
      title: `layui-vue-demo`,
 | 
						|
      description: "layui-vue-demo",
 | 
						|
      template: "node",
 | 
						|
      files: {
 | 
						|
        "src/App.vue": content,
 | 
						|
        "src/index.css": styleCode,
 | 
						|
        "src/main.js": mainCode,
 | 
						|
        "index.html": htmlCode,
 | 
						|
        "package.json": packageJSONCode,
 | 
						|
        "vite.config.js": viteConfigCode,
 | 
						|
        ".stackblitzrc": stackblitzRc,
 | 
						|
      },
 | 
						|
    },
 | 
						|
    {
 | 
						|
      openFile: "src/App.vue",
 | 
						|
    }
 | 
						|
  );
 | 
						|
};
 |