目录结构调整

This commit is contained in:
fofolee 2024-12-20 13:42:54 +08:00
parent b191cca77e
commit 129375ff20
13 changed files with 228 additions and 255 deletions

View File

@ -8,270 +8,244 @@
// Configuration for your app // Configuration for your app
// https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js
const ESLintPlugin = require("eslint-webpack-plugin");
const ESLintPlugin = require('eslint-webpack-plugin')
const MonacoEditorPlugin = require("monaco-editor-webpack-plugin"); const MonacoEditorPlugin = require("monaco-editor-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin");
const path = require("path");
const { const { configure } = require("quasar/wrappers");
configure
} = require('quasar/wrappers');
module.exports = configure(function(ctx) { module.exports = configure(function (ctx) {
return { return {
// https://v2.quasar.dev/quasar-cli-webpack/supporting-ts // https://v2.quasar.dev/quasar-cli-webpack/supporting-ts
supportTS: false, supportTS: false,
// https://v2.quasar.dev/quasar-cli-webpack/prefetch-feature // https://v2.quasar.dev/quasar-cli-webpack/prefetch-feature
// preFetch: true, // preFetch: true,
// app boot file (/src/boot) // app boot file (/src/boot)
// --> boot files are part of "main.js" // --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli-webpack/boot-files // https://v2.quasar.dev/quasar-cli-webpack/boot-files
boot: [], boot: [],
// https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-css // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-css
css: [ css: ["app.css"],
'app.css'
],
// https://github.com/quasarframework/quasar/tree/dev/extras // https://github.com/quasarframework/quasar/tree/dev/extras
extras: [ extras: [
// 'ionicons-v4', // 'ionicons-v4',
// 'mdi-v5', // 'mdi-v5',
// 'fontawesome-v6', // 'fontawesome-v6',
// 'eva-icons', // 'eva-icons',
// 'themify', // 'themify',
// 'line-awesome', // 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
'roboto-font', // optional, you are not bound to it "roboto-font", // optional, you are not bound to it
'material-icons', // optional, you are not bound to it "material-icons", // optional, you are not bound to it
], ],
// Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-build // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-build
build: { build: {
vueRouterMode: 'hash', // available values: 'hash', 'history' vueRouterMode: "hash", // available values: 'hash', 'history'
// transpile: false, // transpile: false,
// publicPath: '/', // publicPath: '/',
// Add dependencies for transpiling with Babel (Array of string/regex) // Add dependencies for transpiling with Babel (Array of string/regex)
// (from node_modules, which are by default not transpiled). // (from node_modules, which are by default not transpiled).
// Applies only if "transpile" is set to true. // Applies only if "transpile" is set to true.
// transpileDependencies: [], // transpileDependencies: [],
// rtl: true, // https://quasar.dev/options/rtl-support // rtl: true, // https://quasar.dev/options/rtl-support
// preloadChunks: true, // preloadChunks: true,
// showProgress: false, // showProgress: false,
// gzip: true, // gzip: true,
// analyze: true, // analyze: true,
// Options below are automatically set depending on the env, set them if you want to override // Options below are automatically set depending on the env, set them if you want to override
// extractCSS: false, // extractCSS: false,
// https://v2.quasar.dev/quasar-cli-webpack/handling-webpack // https://v2.quasar.dev/quasar-cli-webpack/handling-webpack
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
chainWebpack(chain) { chainWebpack(chain) {
chain.plugin('eslint-webpack-plugin') chain.plugin("eslint-webpack-plugin").use(ESLintPlugin, [
.use(ESLintPlugin, [{ {
extensions: ['js', 'vue'] extensions: ["js", "vue"],
}]) },
chain.plugin("monaco-editor-webpack-plugin") ]);
.use(MonacoEditorPlugin, [{ chain.plugin("monaco-editor-webpack-plugin").use(MonacoEditorPlugin, [
languages: ['typescript', 'html'] // 只导入js和html {
}]); languages: ["typescript", "html"], // 只导入js和html
chain.plugin("copy-webpack-plugin") },
.use(CopyPlugin, [{ ]);
patterns: [{ chain.plugin("copy-webpack-plugin").use(CopyPlugin, [
from: './plugin/', {
to: ".", patterns: [
info: { {
minimized: true from: "./plugin/",
}, to: ".",
}], info: {
}]); minimized: true,
},
extendWebpack(cfg) {
cfg.optimization.splitChunks = {
chunks: 'all',
maxSize: 1 * 1000 * 1000,
minSize: 200 * 1000,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all',
},
}, },
} },
} ],
}, },
]);
// Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-devServer chain.resolve.alias.set("plugins", path.join(__dirname, "./src/plugins"));
devServer: { chain.resolve.alias.set("js", path.join(__dirname, "./src/js"));
server: { },
type: 'http' extendWebpack(cfg) {
cfg.optimization.splitChunks = {
chunks: "all",
maxSize: 1 * 1000 * 1000,
minSize: 200 * 1000,
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
name: "vendors",
chunks: "all",
}, },
port: 8080, },
open: false // opens browser window automatically };
}, },
},
// https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-framework // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-devServer
framework: { devServer: {
config: {}, server: {
type: "http",
},
port: 8080,
open: false, // opens browser window automatically
},
// iconSet: 'material-icons', // Quasar icon set // https://v2.quasar.dev/quasar-cli-webpack/quasar-config-js#Property%3A-framework
// lang: 'en-US', // Quasar language pack framework: {
config: {},
// For special cases outside of where the auto-import strategy can have an impact // iconSet: 'material-icons', // Quasar icon set
// (like functional components as one of the examples), // lang: 'en-US', // Quasar language pack
// you can manually specify Quasar components/directives to be available everywhere:
//
// components: [],
// directives: [],
// Quasar plugins // For special cases outside of where the auto-import strategy can have an impact
plugins: ['Notify'] // (like functional components as one of the examples),
}, // you can manually specify Quasar components/directives to be available everywhere:
//
// components: [],
// directives: [],
// animations: 'all', // --- includes all animations // Quasar plugins
// https://quasar.dev/options/animations plugins: ["Notify"],
animations: [], },
// https://v2.quasar.dev/quasar-cli-webpack/developing-ssr/configuring-ssr // animations: 'all', // --- includes all animations
ssr: { // https://quasar.dev/options/animations
pwa: false, animations: [],
// manualStoreHydration: true, // https://v2.quasar.dev/quasar-cli-webpack/developing-ssr/configuring-ssr
// manualPostHydrationTrigger: true, ssr: {
pwa: false,
prodPort: 3000, // The default port that the production server should use // manualStoreHydration: true,
// (gets superseded if process.env.PORT is specified at runtime) // manualPostHydrationTrigger: true,
maxAge: 1000 * 60 * 60 * 24 * 30, prodPort: 3000, // The default port that the production server should use
// Tell browser when a file from the server should expire from cache (in ms) // (gets superseded if process.env.PORT is specified at runtime)
maxAge: 1000 * 60 * 60 * 24 * 30,
// Tell browser when a file from the server should expire from cache (in ms)
chainWebpackWebserver(chain) { chainWebpackWebserver(chain) {
chain.plugin('eslint-webpack-plugin') chain.plugin("eslint-webpack-plugin").use(ESLintPlugin, [
.use(ESLintPlugin, [{ {
extensions: ['js'] extensions: ["js"],
}]) },
}, ]);
},
middlewares: [
ctx.prod ? "compression" : "",
"render", // keep this as last one
],
},
middlewares: [ // https://v2.quasar.dev/quasar-cli-webpack/developing-pwa/configuring-pwa
ctx.prod ? 'compression' : '', pwa: {
'render' // keep this as last one workboxPluginMode: "GenerateSW", // 'GenerateSW' or 'InjectManifest'
] workboxOptions: {}, // only for GenerateSW
},
// https://v2.quasar.dev/quasar-cli-webpack/developing-pwa/configuring-pwa // for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
pwa: { // if using workbox in InjectManifest mode
workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
workboxOptions: {}, // only for GenerateSW
// for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts]) chainWebpackCustomSW(chain) {
// if using workbox in InjectManifest mode chain.plugin("eslint-webpack-plugin").use(ESLintPlugin, [
{
extensions: ["js"],
},
]);
},
chainWebpackCustomSW(chain) { manifest: {
chain.plugin('eslint-webpack-plugin') name: `quickcommand`,
.use(ESLintPlugin, [{ short_name: `quickcommand`,
extensions: ['js'] description: `plugin for uTools`,
}]) display: "standalone",
}, orientation: "portrait",
background_color: "#ffffff",
theme_color: "#027be3",
},
},
manifest: { // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-cordova-apps/configuring-cordova
name: `quickcommand`, cordova: {
short_name: `quickcommand`, // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
description: `plugin for uTools`, },
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [{
src: 'icons/icon-128x128.png',
sizes: '128x128',
type: 'image/png'
},
{
src: 'icons/icon-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'icons/icon-256x256.png',
sizes: '256x256',
type: 'image/png'
},
{
src: 'icons/icon-384x384.png',
sizes: '384x384',
type: 'image/png'
},
{
src: 'icons/icon-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
}
},
// Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-cordova-apps/configuring-cordova // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-capacitor-apps/configuring-capacitor
cordova: { capacitor: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing hideSplashscreen: true,
}, },
// Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-capacitor-apps/configuring-capacitor // Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-electron-apps/configuring-electron
capacitor: { electron: {
hideSplashscreen: true bundler: "packager", // 'packager' or 'builder'
},
// Full list of options: https://v2.quasar.dev/quasar-cli-webpack/developing-electron-apps/configuring-electron packager: {
electron: { // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
bundler: 'packager', // 'packager' or 'builder' // OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
},
packager: { builder: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options // https://www.electron.build/configuration/configuration
// OS X / Mac App Store appId: "quickcommand",
// appBundleId: '', },
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
// win32metadata: { ... }
},
builder: { chainWebpackMain(chain) {
// https://www.electron.build/configuration/configuration chain.plugin("eslint-webpack-plugin").use(ESLintPlugin, [
{
extensions: ["js"],
},
]);
},
appId: 'quickcommand' chainWebpackPreload(chain) {
}, chain.plugin("eslint-webpack-plugin").use(ESLintPlugin, [
{
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain extensions: ["js"],
},
chainWebpackMain(chain) { ]);
chain.plugin('eslint-webpack-plugin') },
.use(ESLintPlugin, [{ },
extensions: ['js'] };
}])
},
chainWebpackPreload(chain) {
chain.plugin('eslint-webpack-plugin')
.use(ESLintPlugin, [{
extensions: ['js']
}])
},
}
}
}); });

View File

@ -275,8 +275,8 @@
</template> </template>
<script> <script>
import commandTypes from "../js/options/commandTypes.js"; import commandTypes from "js/options/commandTypes.js";
import platformTypes from "../js/options/platformTypes.js"; import platformTypes from "js/options/platformTypes.js";
import CrontabSetting from "components/popup/CrontabSetting"; import CrontabSetting from "components/popup/CrontabSetting";
// import ShareDialog from "components/popup/ShareDialog"; // import ShareDialog from "components/popup/ShareDialog";

View File

@ -73,13 +73,13 @@
<script> <script>
import { defineAsyncComponent } from "vue"; import { defineAsyncComponent } from "vue";
import CommandSideBar from "components/CommandSideBar"; import CommandSideBar from "components/editor/CommandSideBar";
import CommandLanguageBar from "components/editor/CommandLanguageBar";
import EditorTools from "components/editor/EditorTools";
import CommandRunResult from "components/CommandRunResult"; import CommandRunResult from "components/CommandRunResult";
import CommandLanguageBar from "components/CommandLanguageBar";
import EditorTools from "components/EditorTools";
// Performance Scripting > 500ms // Performance Scripting > 500ms
const MonacoEditor = defineAsyncComponent(() => const MonacoEditor = defineAsyncComponent(() =>
import("components/MonacoEditor") import("components/editor/MonacoEditor")
); );
export default { export default {

View File

@ -38,9 +38,9 @@
<script> <script>
import outputTypes from "../js/options/outputTypes.js"; import outputTypes from "js/options/outputTypes.js";
import specialVars from "../js/options/specialVars.js"; import specialVars from "js/options/specialVars.js";
import commandTypes from "../js/options/commandTypes.js"; import commandTypes from "js/options/commandTypes.js";
import ResultArea from "components/ResultArea.vue"; import ResultArea from "components/ResultArea.vue";
import ResultMenu from "components/popup/ResultMenu.vue"; import ResultMenu from "components/popup/ResultMenu.vue";

View File

@ -523,11 +523,10 @@
<script> <script>
import { setCssVar } from "quasar"; import { setCssVar } from "quasar";
import { ref } from "vue";
import AboutThis from "components/popup/AboutThis"; import AboutThis from "components/popup/AboutThis";
import PanelSetting from "components/popup/PanelSetting"; import PanelSetting from "components/popup/PanelSetting";
import UserInfo from "components/popup/UserInfo"; import UserInfo from "components/popup/UserInfo";
import features from "../js/options/quickFeatures.js"; import features from "js/options/quickFeatures.js";
import UserData from "components/popup/UserData"; import UserData from "components/popup/UserData";
export default { export default {

View File

@ -334,10 +334,10 @@
</template> </template>
<script> <script>
import commandTypes from "../js/options/commandTypes.js"; import commandTypes from "js/options/commandTypes.js";
import outputTypes from "../js/options/outputTypes.js"; import outputTypes from "js/options/outputTypes.js";
import specialVars from "../js/options/specialVars.js"; import specialVars from "js/options/specialVars.js";
import platformTypes from "../js/options/platformTypes.js"; import platformTypes from "js/options/platformTypes.js";
import iconPicker from "components/popup/IconPicker.vue"; import iconPicker from "components/popup/IconPicker.vue";
import UserData from "components/popup/UserData.vue"; import UserData from "components/popup/UserData.vue";

View File

@ -27,30 +27,30 @@
import EditorHistory from "components/popup/EditorHistory.vue"; import EditorHistory from "components/popup/EditorHistory.vue";
export default { export default {
name: 'EditorTools', name: "EditorTools",
components: { components: {
EditorHistory EditorHistory,
}, },
props: { props: {
commandCode: { commandCode: {
type: String, type: String,
default: 'temp' default: "temp",
}, },
isFullscreen: { isFullscreen: {
type: Boolean, type: Boolean,
default: false default: false,
} },
}, },
emits: ['restore', 'toggle-fullscreen'], emits: ["restore", "toggle-fullscreen"],
methods: { methods: {
showHistory() { showHistory() {
this.$refs.history.open(); this.$refs.history.open();
}, },
tryToSave(content, program) { tryToSave(content, program) {
this.$refs.history.tryToSave(content, program); this.$refs.history.tryToSave(content, program);
} },
} },
} };
</script> </script>
<style scoped> <style scoped>

View File

@ -16,16 +16,16 @@
<script> <script>
import * as monaco from "monaco-editor"; import * as monaco from "monaco-editor";
import { toRaw } from "vue"; import { toRaw } from "vue";
import importAll from "../js/common/importAll.js"; import importAll from "js/common/importAll.js";
// //
let apis = importAll( let apis = importAll(
require.context("!raw-loader!../plugins/monaco/types/", false, /\.ts$/) require.context("!raw-loader!plugins/monaco/types/", false, /\.ts$/)
); );
// //
let languageCompletions = importAll( let languageCompletions = importAll(
require.context("../plugins/monaco/completions/", false, /\.js$/) require.context("plugins/monaco/completions/", false, /\.js$/)
); );
let monacoCompletionProviders = {}; let monacoCompletionProviders = {};

View File

@ -129,7 +129,7 @@
</template> </template>
<script> <script>
import levelDetail from "../../js/options/levelDetail.js"; import levelDetail from "js/options/levelDetail.js";
export default { export default {
data() { data() {

View File

@ -238,9 +238,9 @@
<script> <script>
import { defineAsyncComponent } from "vue"; import { defineAsyncComponent } from "vue";
import quickcommandParser from "../js/common/quickcommandParser.js"; import quickcommandParser from "js/common/quickcommandParser.js";
import importAll from "../js/common/importAll.js"; import importAll from "js/common/importAll.js";
import changeLog from "../js/options/changeLog.js"; import changeLog from "js/options/changeLog.js";
import pinyinMatch from "pinyin-match"; import pinyinMatch from "pinyin-match";
import CommandCard from "components/CommandCard"; import CommandCard from "components/CommandCard";
import CommandEditor from "components/CommandEditor"; import CommandEditor from "components/CommandEditor";

View File

@ -80,7 +80,7 @@
</template> </template>
<script> <script>
import MonacoEditor from "components/MonacoEditor"; import MonacoEditor from "components/editor/MonacoEditor";
export default { export default {
components: { MonacoEditor }, components: { MonacoEditor },

View File

@ -125,7 +125,7 @@
</template> </template>
<script> <script>
import commandTypes from "../js/options/commandTypes.js"; import commandTypes from "js/options/commandTypes.js";
export default { export default {
data() { data() {