From aec1c1312eb9117b649afce344c39c6e8a1d7920 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Wed, 8 May 2019 11:41:49 +0800 Subject: [PATCH] Refactor --- .../assets/src/scripts/{i18n-text.js => i18n-text.ts} | 10 ++++++++-- .../src/scripts/{public-path.js => public-path.ts} | 3 ++- resources/assets/src/shims.d.ts | 6 ++++-- resources/assets/tests/{vue.d.ts => webpack.d.ts} | 8 ++++++++ webpack.config.js | 7 ++++++- 5 files changed, 28 insertions(+), 6 deletions(-) rename resources/assets/src/scripts/{i18n-text.js => i18n-text.ts} (79%) rename resources/assets/src/scripts/{public-path.js => public-path.ts} (66%) rename resources/assets/tests/{vue.d.ts => webpack.d.ts} (56%) diff --git a/resources/assets/src/scripts/i18n-text.js b/resources/assets/src/scripts/i18n-text.ts similarity index 79% rename from resources/assets/src/scripts/i18n-text.js rename to resources/assets/src/scripts/i18n-text.ts index 8e2ab070..2ad505a3 100644 --- a/resources/assets/src/scripts/i18n-text.js +++ b/resources/assets/src/scripts/i18n-text.ts @@ -1,6 +1,12 @@ -import elementLocale from 'element-ui/lib/locale' +import { locale as elementLocale } from 'element-ui' import { emit } from './event' +declare module 'element-ui/types/element-ui' { + export const locale: { + use(i18n: any): void + } +} + const langs = { en: { bs: () => import('../../../lang/en/front-end.yml'), @@ -12,7 +18,7 @@ const langs = { }, } -async function load(language) { +async function load(language: import('../shims').I18n) { const { bs: loadBS, element: loadElement } = langs[language] await Promise.all([ (async () => { diff --git a/resources/assets/src/scripts/public-path.js b/resources/assets/src/scripts/public-path.ts similarity index 66% rename from resources/assets/src/scripts/public-path.js rename to resources/assets/src/scripts/public-path.ts index 4a6d9d11..9a7c940d 100644 --- a/resources/assets/src/scripts/public-path.js +++ b/resources/assets/src/scripts/public-path.ts @@ -1,5 +1,6 @@ -/* eslint-disable no-undef */ +/* eslint-disable prefer-const */ /* eslint-disable camelcase */ +declare let __webpack_public_path__: string __webpack_public_path__ = process.env.NODE_ENV === 'development' ? 'http://127.0.0.1:8080/' : `${blessing.base_url}/app/` diff --git a/resources/assets/src/shims.d.ts b/resources/assets/src/shims.d.ts index e967520a..da5f2d2d 100644 --- a/resources/assets/src/shims.d.ts +++ b/resources/assets/src/shims.d.ts @@ -2,13 +2,15 @@ import Vue from 'vue' import * as JQuery from 'jquery' +type I18n = 'en' | 'zh_CN' + declare global { let blessing: { base_url: string debug: boolean env: string - fallback_locale: string - locale: string + fallback_locale: I18n + locale: I18n site_name: string timezone: string version: string diff --git a/resources/assets/tests/vue.d.ts b/resources/assets/tests/webpack.d.ts similarity index 56% rename from resources/assets/tests/vue.d.ts rename to resources/assets/tests/webpack.d.ts index 580af69e..5be6b115 100644 --- a/resources/assets/tests/vue.d.ts +++ b/resources/assets/tests/webpack.d.ts @@ -8,3 +8,11 @@ declare module '*.vue' { declare module '*.styl' { export default {} } + +declare module '*.yml' { + export default {} +} + +declare module 'element-ui/lib/locale/lang/*' { + export default {} +} diff --git a/webpack.config.js b/webpack.config.js index 437fb317..f513b0fb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -46,7 +46,12 @@ const config = { libraryName: 'element-ui', libraryDirectory: 'lib', camel2DashComponentName: true, - style: name => `${name.replace('lib/', 'lib/theme-chalk/')}.css`, + style: name => { + if (name.includes('locale')) { + return false + } + return `${name.replace('lib/', 'lib/theme-chalk/')}.css` + }, }], ], },