Refactoring

This commit is contained in:
syuilo
2017-05-17 00:00:56 +09:00
parent e237c53766
commit fb70e3b176
12 changed files with 202 additions and 121 deletions

5
webpack/module/index.ts Normal file
View File

@ -0,0 +1,5 @@
import rules from './rules';
export default (lang, locale) => ({
rules: rules(lang, locale)
});

View File

@ -0,0 +1,34 @@
/**
* Replace i18n texts
*/
const StringReplacePlugin = require('string-replace-webpack-plugin');
export default (lang, locale) => ({
enforce: 'pre',
test: /\.(tag|js)$/,
exclude: /node_modules/,
loader: StringReplacePlugin.replace({
replacements: [
{
pattern: /%i18n:(.+?)%/g, replacement: (_, key) => {
let text = locale;
const error = key.split('.').some(k => {
if (text.hasOwnProperty(k)) {
text = text[k];
return false;
} else {
return true;
}
});
if (error) {
console.warn(`key '${key}' not found in '${lang}'`);
return key;
} else {
return text.replace(/'/g, '\\\'').replace(/"/g, '\\"');
}
}
}
]
})
});

View File

@ -0,0 +1,11 @@
import i18n from './i18n';
import themeColor from './theme-color';
import tag from './tag';
import stylus from './stylus';
export default (lang, locale) => [
i18n(lang, locale),
themeColor(),
tag(),
stylus()
];

View File

@ -0,0 +1,13 @@
/**
* Stylus support
*/
export default () => ({
test: /\.styl$/,
exclude: /node_modules/,
use: [
{ loader: 'style-loader' },
{ loader: 'css-loader' },
{ loader: 'stylus-loader' }
]
});

View File

@ -0,0 +1,20 @@
/**
* Riot tags
*/
export default () => ({
test: /\.tag$/,
exclude: /node_modules/,
loader: 'riot-tag-loader',
query: {
hot: false,
style: 'stylus',
expr: false,
compact: true,
parserOptions: {
style: {
compress: true
}
}
}
});

View File

@ -0,0 +1,25 @@
/**
* Theme color provider
*/
const StringReplacePlugin = require('string-replace-webpack-plugin');
const constants = require('../../../src/const.json');
export default () => ({
enforce: 'pre',
test: /\.tag$/,
exclude: /node_modules/,
loader: StringReplacePlugin.replace({
replacements: [
{
pattern: /\$theme\-color\-foreground/g,
replacement: () => constants.themeColorForeground
},
{
pattern: /\$theme\-color/g,
replacement: () => constants.themeColor
},
]
})
});