summaryrefslogtreecommitdiff
path: root/webpack
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-02-16 03:23:10 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-02-16 03:23:10 +0900
commit11f32375b662c7584aeb0efae4513ea07e8bb1b3 (patch)
tree247b540f5c66daebc05885ea46d8a8bbca1b812c /webpack
parentwip (diff)
downloadsharkey-11f32375b662c7584aeb0efae4513ea07e8bb1b3.tar.gz
sharkey-11f32375b662c7584aeb0efae4513ea07e8bb1b3.tar.bz2
sharkey-11f32375b662c7584aeb0efae4513ea07e8bb1b3.zip
wip
Diffstat (limited to 'webpack')
-rw-r--r--webpack/loaders/replace.js8
-rw-r--r--webpack/module/index.ts5
-rw-r--r--webpack/module/rules/fa.ts16
-rw-r--r--webpack/module/rules/i18n.ts20
-rw-r--r--webpack/module/rules/index.ts18
-rw-r--r--webpack/module/rules/stylus.ts13
-rw-r--r--webpack/module/rules/typescript.ts13
-rw-r--r--webpack/module/rules/vue.ts31
-rw-r--r--webpack/webpack.config.ts66
9 files changed, 69 insertions, 121 deletions
diff --git a/webpack/loaders/replace.js b/webpack/loaders/replace.js
index 41c33ce8d6..4bb00a2abf 100644
--- a/webpack/loaders/replace.js
+++ b/webpack/loaders/replace.js
@@ -7,9 +7,11 @@ function trim(text) {
module.exports = function(src) {
this.cacheable();
const options = loaderUtils.getOptions(this);
- if (typeof options.search != 'string' || options.search.length == 0) console.error('invalid search');
- if (typeof options.replace != 'function') console.error('invalid replacer');
- src = src.replace(new RegExp(trim(options.search), 'g'), options.replace);
+ const search = options.search;
+ const replace = global[options.replace];
+ if (typeof search != 'string' || search.length == 0) console.error('invalid search');
+ if (typeof replace != 'function') console.error('invalid replacer:', replace, this.request);
+ src = src.replace(new RegExp(trim(search), 'g'), replace);
this.callback(null, src);
return src;
};
diff --git a/webpack/module/index.ts b/webpack/module/index.ts
deleted file mode 100644
index 088aca7238..0000000000
--- a/webpack/module/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import rules from './rules';
-
-export default lang => ({
- rules: rules(lang)
-});
diff --git a/webpack/module/rules/fa.ts b/webpack/module/rules/fa.ts
deleted file mode 100644
index a31bf1bee2..0000000000
--- a/webpack/module/rules/fa.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Replace fontawesome symbols
- */
-
-import { pattern, replacement } from '../../../src/common/build/fa';
-
-export default () => ({
- //enforce: 'pre',
- test: /\.(vue|js|ts)$/,
- exclude: /node_modules/,
- loader: 'replace',
- query: {
- search: pattern.toString(),
- replace: replacement
- }
-});
diff --git a/webpack/module/rules/i18n.ts b/webpack/module/rules/i18n.ts
deleted file mode 100644
index f3270b4df7..0000000000
--- a/webpack/module/rules/i18n.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Replace i18n texts
- */
-
-import Replacer from '../../../src/common/build/i18n';
-
-export default lang => {
- const replacer = new Replacer(lang);
-
- return {
- //enforce: 'post',
- test: /\.(vue|js|ts)$/,
- exclude: /node_modules/,
- loader: 'replace',
- query: {
- search: replacer.pattern.toString(),
- replace: replacer.replacement
- }
- };
-};
diff --git a/webpack/module/rules/index.ts b/webpack/module/rules/index.ts
deleted file mode 100644
index d97614ad29..0000000000
--- a/webpack/module/rules/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import i18n from './i18n';
-import fa from './fa';
-//import base64 from './base64';
-import vue from './vue';
-import stylus from './stylus';
-import typescript from './typescript';
-import collapseSpaces from './collapse-spaces';
-
-export default lang => [
- //collapseSpaces(),
-
- //base64(),
- vue(),
- i18n(lang),
- fa(),
- stylus(),
- typescript()
-];
diff --git a/webpack/module/rules/stylus.ts b/webpack/module/rules/stylus.ts
deleted file mode 100644
index dd1e4c3218..0000000000
--- a/webpack/module/rules/stylus.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Stylus support
- */
-
-export default () => ({
- test: /\.styl$/,
- exclude: /node_modules/,
- use: [
- { loader: 'style-loader' },
- { loader: 'css-loader' },
- { loader: 'stylus-loader' }
- ]
-});
diff --git a/webpack/module/rules/typescript.ts b/webpack/module/rules/typescript.ts
deleted file mode 100644
index 5f2903d77e..0000000000
--- a/webpack/module/rules/typescript.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * TypeScript
- */
-
-export default () => ({
- test: /\.ts$/,
- exclude: /node_modules/,
- loader: 'ts-loader',
- options: {
- configFile: __dirname + '/../../../src/web/app/tsconfig.json',
- appendTsSuffixTo: [/\.vue$/]
- }
-});
diff --git a/webpack/module/rules/vue.ts b/webpack/module/rules/vue.ts
deleted file mode 100644
index 990f839915..0000000000
--- a/webpack/module/rules/vue.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Vue
- */
-
-const constants = require('../../../src/const.json');
-
-export default () => ({
- test: /\.vue$/,
- exclude: /node_modules/,
- use: [{
- loader: 'vue-loader',
- options: {
- cssSourceMap: false,
- preserveWhitespace: false
- }
- }, {
- loader: 'webpack-replace-loader',
- options: {
- search: '$theme-color',
- replace: constants.themeColor,
- attr: 'g'
- }
- }, {
- loader: 'webpack-replace-loader',
- query: {
- search: '$theme-color-foreground',
- replace: constants.themeColorForeground,
- attr: 'g'
- }
- }]
-});
diff --git a/webpack/webpack.config.ts b/webpack/webpack.config.ts
index dd00acaae6..ee7d4df9ef 100644
--- a/webpack/webpack.config.ts
+++ b/webpack/webpack.config.ts
@@ -2,12 +2,17 @@
* webpack configuration
*/
-import module_ from './module';
+import I18nReplacer from '../src/common/build/i18n';
+import { pattern as faPattern, replacement as faReplacement } from '../src/common/build/fa';
+const constants = require('../src/const.json');
+
import plugins from './plugins';
import langs from '../locales';
import version from '../src/version';
+global['faReplacement'] = faReplacement;
+
module.exports = Object.keys(langs).map(lang => {
// Chunk name
const name = lang;
@@ -29,10 +34,67 @@ module.exports = Object.keys(langs).map(lang => {
filename: `[name].${version}.${lang}.js`
};
+ const i18nReplacer = new I18nReplacer(lang);
+ global['i18nReplacement'] = i18nReplacer.replacement;
+
return {
name,
entry,
- module: module_(lang),
+ module: {
+ rules: [{
+ test: /\.vue$/,
+ exclude: /node_modules/,
+ use: [{
+ loader: 'vue-loader',
+ options: {
+ cssSourceMap: false,
+ preserveWhitespace: false
+ }
+ }, {
+ loader: 'webpack-replace-loader',
+ options: {
+ search: '$theme-color',
+ replace: constants.themeColor,
+ attr: 'g'
+ }
+ }, {
+ loader: 'webpack-replace-loader',
+ query: {
+ search: '$theme-color-foreground',
+ replace: constants.themeColorForeground,
+ attr: 'g'
+ }
+ }, {
+ loader: 'replace',
+ query: {
+ search: i18nReplacer.pattern.toString(),
+ replace: 'i18nReplacement'
+ }
+ }, {
+ loader: 'replace',
+ query: {
+ search: faPattern.toString(),
+ replace: 'faReplacement'
+ }
+ }]
+ }, {
+ test: /\.styl$/,
+ exclude: /node_modules/,
+ use: [
+ { loader: 'style-loader' },
+ { loader: 'css-loader' },
+ { loader: 'stylus-loader' }
+ ]
+ }, {
+ test: /\.ts$/,
+ exclude: /node_modules/,
+ loader: 'ts-loader',
+ options: {
+ configFile: __dirname + '/../src/web/app/tsconfig.json',
+ appendTsSuffixTo: [/\.vue$/]
+ }
+ }]
+ },
plugins: plugins(version, lang),
output,
resolve: {