diff options
Diffstat (limited to 'webpack/module/rules')
| -rw-r--r-- | webpack/module/rules/consts.ts | 36 | ||||
| -rw-r--r-- | webpack/module/rules/index.ts | 2 |
2 files changed, 38 insertions, 0 deletions
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(), |