misskey-awawa/webpack/module/rules/consts.ts

42 lines
1.3 KiB
TypeScript

/**
* 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_: config.sw ? JSON.stringify(config.sw.public_key) : JSON.stringify(null),
_THEME_COLOR_: JSON.stringify(constants.themeColor),
_VERSION_: JSON.stringify(version),
_STATUS_URL_: JSON.stringify(config.status_url),
_STATS_URL_: JSON.stringify(config.stats_url),
_ABOUT_URL_: JSON.stringify(config.about_url),
_API_URL_: JSON.stringify(config.api_url),
_DEV_URL_: JSON.stringify(config.dev_url),
_CH_URL_: JSON.stringify(config.ch_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
})
};
};