UNPKG

leds-spark-lib

Version:

Biblioteca de geração de código

279 lines (270 loc) 7.41 kB
import fs from "fs"; import { expandToString } from "../../util/template-string.js"; import path from "path"; import { generate as generatePackageLock } from "./packagelock-generator.js"; export function generate(project_abstraction, target_folder) { fs.writeFileSync(path.join(target_folder, '.browserslistrc'), generateBrowsersList()); fs.writeFileSync(path.join(target_folder, '.editorconfig'), generateEditorConfig()); fs.writeFileSync(path.join(target_folder, '.env.dev'), generateEnvDev()); fs.writeFileSync(path.join(target_folder, '.gitignore'), generateGitIgnore()); fs.writeFileSync(path.join(target_folder, 'components.d.ts'), generateComponentsD()); fs.writeFileSync(path.join(target_folder, 'env.d.ts'), generateEnvD()); fs.writeFileSync(path.join(target_folder, 'package-lock.json'), generatePackageLock(project_abstraction)); fs.writeFileSync(path.join(target_folder, 'package.json'), generatePackage()); fs.writeFileSync(path.join(target_folder, 'tsconfig.app.json'), generateTsConfigApp()); fs.writeFileSync(path.join(target_folder, 'tsconfig.json'), generateTsConfig()); fs.writeFileSync(path.join(target_folder, 'tsconfig.node.json'), generateTsConfigNode()); fs.writeFileSync(path.join(target_folder, 'vite.config.mts'), generateViteConfig()); fs.writeFileSync(path.join(target_folder, 'index.html'), generateIndex(project_abstraction)); } function generateBrowsersList() { return expandToString ` > 1% last 2 versions not dead not ie 11 `; } function generateEditorConfig() { return expandToString ` [*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}] charset = utf-8 indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true `; } function generateEnvDev() { return expandToString ` # note que se voce possui um arquivo .env.local, e necessario # redefinir as variaveis deste arquivo nele. VITE_BACKEND_ADMIN_BASE_URL="https://localhost:3000/api/" VITE_BACKEND_ADMIN_AUTH_TOKEN= `; } function generateGitIgnore() { return expandToString ` .DS_Store node_modules /dist # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw? `; } function generateComponentsD() { return expandToString ` /* eslint-disable */ // @ts-nocheck // Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { Card: typeof import('./src/components/Card.vue')['default'] DataTable: typeof import('./src/components/DataTable.vue')['default'] GenericTextInput: typeof import('./src/components/GenericTextInput.vue')['default'] IconNav: typeof import('./src/components/icons/IconNav.vue')['default'] NavGroup: typeof import('./src/components/sidenav/NavGroup.vue')['default'] NavItem: typeof import('./src/components/sidenav/NavItem.vue')['default'] NavMenu: typeof import('./src/components/sidenav/NavMenu.vue')['default'] PButton: typeof import('./src/components/PButton.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] TextInput: typeof import('./src/components/TextInput.vue')['default'] } } `; } function generateEnvD() { return expandToString ` /// <reference types="vite/client" /> `; } function generatePackage() { return expandToString ` { "name": "modularch", "private": true, "type": "module", "version": "0.0.0", "scripts": { "dev": "vite --port 5173", "build": "run-p type-check \"build-only {@}\" --", "preview": "vite preview", "build-only": "vite build", "type-check": "vue-tsc --build --force" }, "dependencies": { "@vueuse/integrations": "^13.1.0", "axios": "^1.8.4", "pinia": "^3.0.2", "roboto-fontface": "*", "universal-cookie": "^7.2.2", "vue": "^3.4.31", "vue-router": "^4.5.0" }, "devDependencies": { "@tailwindcss/vite": "^4.1.4", "@tsconfig/node22": "^22.0.0", "@types/node": "^22.9.0", "@vitejs/plugin-vue": "^5.1.4", "@vue/eslint-config-typescript": "^14.1.3", "@vue/tsconfig": "^0.5.1", "npm-run-all2": "^7.0.1", "tailwindcss": "^4.1.4", "typescript": "~5.6.3", "unplugin-vue-components": "^0.27.2", "vite": "^5.4.10", "vue-tsc": "^2.1.10" } } `; } function generateTsConfigApp() { return expandToString ` { "extends": "@vue/tsconfig/tsconfig.dom.json", "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], "exclude": ["src/**/__tests__/*"], "compilerOptions": { "composite": true, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "baseUrl": ".", "paths": { "@/*": ["./src/*"] }, "lib": ["ES2021", "DOM"], } } `; } function generateTsConfig() { return expandToString ` { "files": [], "references": [ { "path": "./tsconfig.node.json" }, { "path": "./tsconfig.app.json" } ] } `; } function generateTsConfigNode() { return expandToString ` { "extends": "@tsconfig/node22/tsconfig.json", "include": [ "vite.config.*", "vitest.config.*", "cypress.config.*", "nightwatch.conf.*", "playwright.config.*" ], "compilerOptions": { "composite": true, "noEmit": true, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", "module": "ESNext", "moduleResolution": "Bundler", "types": ["node"] } } `; } function generateViteConfig() { return expandToString ` // Plugins import Components from 'unplugin-vue-components/vite' import Vue from '@vitejs/plugin-vue' // import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify' // import ViteFonts from 'unplugin-fonts/vite' import tailwindcss from '@tailwindcss/vite' // Utilities import { defineConfig } from 'vite' import { fileURLToPath, URL } from 'node:url' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ tailwindcss(), Vue({ // template: { transformAssetUrls }, }), // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme // Vuetify(), Components(), /* ViteFonts({ google: { families: [{ name: 'Roboto', styles: 'wght@100;300;400;500;700;900', }], }, }), */ ], define: { 'process.env': {} }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, extensions: [ '.js', '.json', '.jsx', '.mjs', '.ts', '.tsx', '.vue', ], }, server: { port: 3000, }, /* css: { preprocessorOptions: { sass: { api: 'modern-compiler', }, }, }, */ }) `; } function generateIndex(project_abstraction) { return expandToString ` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="icon" href="/favicon.ico"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="/src/assets/style.css"> <title>${project_abstraction.getProjectName()}</title> </head> <body> <div id="app"></div> <script type="module" src="/src/main.ts"></script> </body> </html> `; } //# sourceMappingURL=helpers-generator.js.map