From 3f8ebac466ece8e9598432f3f574ec44e420c03b Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 23 Nov 2017 05:43:00 +0900 Subject: なんかもうめっちゃ変えた MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #940 --- webpack/module/rules/consts.ts | 36 ++++++++++++++++++++++++++++++++++++ webpack/module/rules/index.ts | 2 ++ webpack/plugins/const.ts | 14 -------------- webpack/plugins/index.ts | 2 -- 4 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 webpack/module/rules/consts.ts delete mode 100644 webpack/plugins/const.ts (limited to 'webpack') diff --git a/webpack/module/rules/consts.ts b/webpack/module/rules/consts.ts new file mode 100644 index 0000000000..2469ecf345 --- /dev/null +++ b/webpack/module/rules/consts.ts @@ -0,0 +1,36 @@ +/** + * Replace consts + */ + +const StringReplacePlugin = require('string-replace-webpack-plugin'); + +import version from '../../../src/version'; +const constants = require('../../../src/const.json'); +import config from '../../../src/conf'; + +export default lang => { + // 置換の誤爆を防ぐため文字数の多い順に並べてください + const consts = { + _RECAPTCHA_SITEKEY_: JSON.stringify(config.recaptcha.site_key), + _SW_PUBLICKEY_: JSON.stringify(config.sw.public_key), + _THEME_COLOR_: JSON.stringify(constants.themeColor), + _VERSION_: JSON.stringify(version), + _API_URL_: JSON.stringify(config.api_url), + _LANG_: JSON.stringify(lang), + _HOST_: JSON.stringify(config.host), + _URL_: JSON.stringify(config.url), + }; + + const replacements = Object.keys(consts).map(key => ({ + pattern: new RegExp(key, 'g'), replacement: () => consts[key] + })); + + return { + enforce: 'post', + test: /\.(tag|js|ts)$/, + exclude: /node_modules/, + loader: StringReplacePlugin.replace({ + replacements: replacements + }) + }; +}; diff --git a/webpack/module/rules/index.ts b/webpack/module/rules/index.ts index 9c1262b3d6..0006f622d2 100644 --- a/webpack/module/rules/index.ts +++ b/webpack/module/rules/index.ts @@ -1,4 +1,5 @@ import i18n from './i18n'; +import consts from './consts'; import base64 from './base64'; import themeColor from './theme-color'; import tag from './tag'; @@ -7,6 +8,7 @@ import typescript from './typescript'; export default (lang, locale) => [ i18n(lang, locale), + consts(lang), base64(), themeColor(), tag(), diff --git a/webpack/plugins/const.ts b/webpack/plugins/const.ts deleted file mode 100644 index f64160b01a..0000000000 --- a/webpack/plugins/const.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Constant Replacer - */ - -import * as webpack from 'webpack'; - -import version from '../../src/version'; -const constants = require('../../src/const.json'); - -export default lang => new webpack.DefinePlugin({ - VERSION: JSON.stringify(version), - LANG: JSON.stringify(lang), - THEME_COLOR: JSON.stringify(constants.themeColor) -}); diff --git a/webpack/plugins/index.ts b/webpack/plugins/index.ts index d37047b672..24782a1de6 100644 --- a/webpack/plugins/index.ts +++ b/webpack/plugins/index.ts @@ -1,6 +1,5 @@ const StringReplacePlugin = require('string-replace-webpack-plugin'); -import constant from './const'; import hoist from './hoist'; //import minify from './minify'; import banner from './banner'; @@ -10,7 +9,6 @@ const isProduction = env === 'production'; export default (version, lang) => { const plugins = [ - constant(lang), new StringReplacePlugin(), hoist() ]; -- cgit v1.2.3-freya