diff --git a/.eslintrc.js b/.eslintrc.js index 938bbd7..a15b65c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,7 +8,8 @@ module.exports = { ], globals: { defineEmits: true, - defineProps: true + defineProps: true, + __APP_ENV__: true }, rules: { 'vue/no-v-html': 'off' diff --git a/src/config/api.yml b/config/api.yml similarity index 100% rename from src/config/api.yml rename to config/api.yml diff --git a/src/config/copyright.yml b/config/copyright.yml similarity index 100% rename from src/config/copyright.yml rename to config/copyright.yml diff --git a/src/config/header.yml b/config/header.yml similarity index 100% rename from src/config/header.yml rename to config/header.yml diff --git a/src/config/mapping.yml b/config/mapping.yml similarity index 100% rename from src/config/mapping.yml rename to config/mapping.yml diff --git a/src/config/project.yml b/config/project.yml similarity index 100% rename from src/config/project.yml rename to config/project.yml diff --git a/src/config/router.yml b/config/router.yml similarity index 100% rename from src/config/router.yml rename to config/router.yml diff --git a/config/vendor/tailwind.config.js b/config/vendor/tailwind.config.js new file mode 100644 index 0000000..4bb6b81 --- /dev/null +++ b/config/vendor/tailwind.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + require('../../tailwind.config.js') + ] +} diff --git a/package-lock.json b/package-lock.json index c569942..eeddc31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "axios": "^0.27.2", + "js-yaml": "^4.1.0", "leaflet": "^1.8.0", "vue": "^3.2.37", "vue-router": "^4.1.2" @@ -535,8 +536,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/asap": { "version": "2.0.6", @@ -2669,7 +2669,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -4919,8 +4918,7 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "asap": { "version": "2.0.6", @@ -6380,7 +6378,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } diff --git a/package.json b/package.json index 4054bba..5d7b99e 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "axios": "^0.27.2", + "js-yaml": "^4.1.0", "leaflet": "^1.8.0", "vue": "^3.2.37", "vue-router": "^4.1.2" diff --git a/src/components/Layout/LayoutFooter.vue b/src/components/Layout/LayoutFooter.vue index ec3123b..09af82d 100644 --- a/src/components/Layout/LayoutFooter.vue +++ b/src/components/Layout/LayoutFooter.vue @@ -74,19 +74,13 @@ diff --git a/src/components/Layout/LayoutHeader.vue b/src/components/Layout/LayoutHeader.vue index 3a9f7b6..d76e769 100644 --- a/src/components/Layout/LayoutHeader.vue +++ b/src/components/Layout/LayoutHeader.vue @@ -90,18 +90,12 @@ \ No newline at end of file diff --git a/src/components/Map/VMap.vue b/src/components/Map/VMap.vue index 3e03977..f3e2e42 100644 --- a/src/components/Map/VMap.vue +++ b/src/components/Map/VMap.vue @@ -21,7 +21,6 @@ import iconRetina from 'leaflet/dist/images/marker-icon-2x.png' import iconUrl from 'leaflet/dist/images/marker-icon.png' import shadowUrl from 'leaflet/dist/images/marker-shadow.png' import geojsonDefaultOptions from './utils/geojsonOptions' -import mappingConfiguration from '@/config/mapping.yml' delete L.Icon.Default.prototype._getIconUrl @@ -31,7 +30,7 @@ L.Icon.Default.mergeOptions({ shadowUrl: shadowUrl }) -const { map_server_tils } = mappingConfiguration +const { map_server_tils } = __APP_ENV__ const props = defineProps({ zoomAnimate: { diff --git a/src/config/vendor/tailwind.config.js b/src/config/vendor/tailwind.config.js deleted file mode 100644 index c63433b..0000000 --- a/src/config/vendor/tailwind.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - require('../../../tailwind.config.js') - ] -} diff --git a/src/constants/configPaths.js b/src/constants/configPaths.js index 331688b..2f07751 100644 --- a/src/constants/configPaths.js +++ b/src/constants/configPaths.js @@ -1,4 +1,4 @@ module.exports = { - userTailwindConfigPath: './src/config/vendor/tailwind.config.js', + userTailwindConfigPath: './config/vendor/tailwind.config.js', defaultTailwindConfigPath: './tailwind.config.js' } diff --git a/src/router/index.js b/src/router/index.js index b52cc8c..3d394f4 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -6,7 +6,7 @@ import { import otusRoutes from '@/modules/otus/router' import dynamicRoutes from '~pages' -import routerConfiguration from '@/config/router.yml' +import routerConfiguration from '../../config/router.yml' const { base_url, hash_mode } = routerConfiguration diff --git a/src/utils/loadConfiguration.js b/src/utils/loadConfiguration.js new file mode 100644 index 0000000..97d76a5 --- /dev/null +++ b/src/utils/loadConfiguration.js @@ -0,0 +1,10 @@ +import fs from 'fs' +import yaml from 'js-yaml' +import glob from 'glob' + +export const loadConfiguration = appPath => { + const filePaths = glob.sync(appPath + '/config/*.yml', {}) + const jsonConfig = filePaths.map(filepath => yaml.load(fs.readFileSync(filepath, 'utf8'))) + + return Object.assign({}, ...jsonConfig) +} diff --git a/src/utils/parseEnvConfig.js b/src/utils/parseEnvConfig.js new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/request.js b/src/utils/request.js index 816646f..00e6b14 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,10 +1,9 @@ import axios from 'axios' -import requiredConfiguration from '@/config/api.yml' const { url, project_token -} = requiredConfiguration +} = __APP_ENV__ const makeAPIRequest = axios.create({ baseURL: url, diff --git a/vite.config.js b/vite.config.js index 1b2dfe2..8e9e3c4 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,16 +1,20 @@ import { defineConfig, loadEnv } from 'vite' +import { loadConfiguration } from './src/utils/loadConfiguration.js' import Vue from '@vitejs/plugin-vue' import Markdown from 'vite-plugin-md' import path from 'path' import Pages from 'vite-plugin-pages' import Content from '@originjs/vite-plugin-content' -// https://vitejs.dev/config/ export default ({ mode }) => { const { VITE_BASE_URL } = loadEnv(mode, process.cwd()) return defineConfig({ base: VITE_BASE_URL, + define: { + __APP_ENV__: loadConfiguration(__dirname), + __APP_PATH__: () => __dirname + }, resolve: { alias: { '@': path.resolve(__dirname, './src')