From 11f32375b662c7584aeb0efae4513ea07e8bb1b3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 16 Feb 2018 03:23:10 +0900 Subject: wip --- webpack/loaders/replace.js | 8 +++-- webpack/module/index.ts | 5 --- webpack/module/rules/fa.ts | 16 --------- webpack/module/rules/i18n.ts | 20 ------------ webpack/module/rules/index.ts | 18 ----------- webpack/module/rules/stylus.ts | 13 -------- webpack/module/rules/typescript.ts | 13 -------- webpack/module/rules/vue.ts | 31 ------------------ webpack/webpack.config.ts | 66 ++++++++++++++++++++++++++++++++++++-- 9 files changed, 69 insertions(+), 121 deletions(-) delete mode 100644 webpack/module/index.ts delete mode 100644 webpack/module/rules/fa.ts delete mode 100644 webpack/module/rules/i18n.ts delete mode 100644 webpack/module/rules/index.ts delete mode 100644 webpack/module/rules/stylus.ts delete mode 100644 webpack/module/rules/typescript.ts delete mode 100644 webpack/module/rules/vue.ts (limited to 'webpack') 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: { -- cgit v1.2.3-freya