wip
This commit is contained in:
		@@ -117,6 +117,7 @@
 | 
			
		||||
		"gulp-typescript": "3.2.4",
 | 
			
		||||
		"gulp-uglify": "3.0.0",
 | 
			
		||||
		"gulp-util": "3.0.8",
 | 
			
		||||
		"hard-source-webpack-plugin": "^0.5.18",
 | 
			
		||||
		"highlight.js": "9.12.0",
 | 
			
		||||
		"html-minifier": "^3.5.9",
 | 
			
		||||
		"inquirer": "5.0.1",
 | 
			
		||||
@@ -145,6 +146,7 @@
 | 
			
		||||
		"recaptcha-promise": "0.1.3",
 | 
			
		||||
		"reconnecting-websocket": "3.2.2",
 | 
			
		||||
		"redis": "2.8.0",
 | 
			
		||||
		"replace-string-loader": "0.0.7",
 | 
			
		||||
		"request": "2.83.0",
 | 
			
		||||
		"rimraf": "2.6.2",
 | 
			
		||||
		"riot": "3.8.1",
 | 
			
		||||
 
 | 
			
		||||
@@ -3,17 +3,18 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import * as fs from 'fs';
 | 
			
		||||
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
			
		||||
 | 
			
		||||
export default () => ({
 | 
			
		||||
	enforce: 'pre',
 | 
			
		||||
	test: /\.(vue|js)$/,
 | 
			
		||||
	exclude: /node_modules/,
 | 
			
		||||
	loader: StringReplacePlugin.replace({
 | 
			
		||||
		replacements: [{
 | 
			
		||||
			pattern: /%base64:(.+?)%/g, replacement: (_, key) => {
 | 
			
		||||
	use: [{
 | 
			
		||||
		loader: 'replace-string-loader',
 | 
			
		||||
		options: {
 | 
			
		||||
			search: /%base64:(.+?)%/g,
 | 
			
		||||
			replace: (_, key) => {
 | 
			
		||||
				return fs.readFileSync(__dirname + '/../../../src/web/' + key, 'base64');
 | 
			
		||||
			}
 | 
			
		||||
		}]
 | 
			
		||||
	})
 | 
			
		||||
		}
 | 
			
		||||
	}]
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -2,16 +2,17 @@
 | 
			
		||||
 * Replace fontawesome symbols
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
			
		||||
import { pattern, replacement } from '../../../src/common/build/fa';
 | 
			
		||||
 | 
			
		||||
export default () => ({
 | 
			
		||||
	enforce: 'pre',
 | 
			
		||||
	test: /\.(vue|js|ts)$/,
 | 
			
		||||
	exclude: /node_modules/,
 | 
			
		||||
	loader: StringReplacePlugin.replace({
 | 
			
		||||
		replacements: [{
 | 
			
		||||
			pattern, replacement
 | 
			
		||||
		}]
 | 
			
		||||
	})
 | 
			
		||||
	use: [{
 | 
			
		||||
		loader: 'replace-string-loader',
 | 
			
		||||
		options: {
 | 
			
		||||
			search: pattern,
 | 
			
		||||
			replace: replacement
 | 
			
		||||
		}
 | 
			
		||||
	}]
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
 * Replace i18n texts
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
			
		||||
import Replacer from '../../../src/common/build/i18n';
 | 
			
		||||
 | 
			
		||||
export default lang => {
 | 
			
		||||
@@ -12,10 +11,12 @@ export default lang => {
 | 
			
		||||
		enforce: 'pre',
 | 
			
		||||
		test: /\.(vue|js|ts)$/,
 | 
			
		||||
		exclude: /node_modules/,
 | 
			
		||||
		loader: StringReplacePlugin.replace({
 | 
			
		||||
			replacements: [{
 | 
			
		||||
				pattern: replacer.pattern, replacement: replacer.replacement
 | 
			
		||||
			}]
 | 
			
		||||
		})
 | 
			
		||||
		use: [{
 | 
			
		||||
			loader: 'replace-string-loader',
 | 
			
		||||
			options: {
 | 
			
		||||
				search: replacer.pattern,
 | 
			
		||||
				replace: replacer.replacement
 | 
			
		||||
			}
 | 
			
		||||
		}]
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,6 @@
 | 
			
		||||
import i18n from './i18n';
 | 
			
		||||
import license from './license';
 | 
			
		||||
import fa from './fa';
 | 
			
		||||
import base64 from './base64';
 | 
			
		||||
//import base64 from './base64';
 | 
			
		||||
import themeColor from './theme-color';
 | 
			
		||||
import vue from './vue';
 | 
			
		||||
import stylus from './stylus';
 | 
			
		||||
@@ -11,9 +10,8 @@ import collapseSpaces from './collapse-spaces';
 | 
			
		||||
export default lang => [
 | 
			
		||||
	collapseSpaces(),
 | 
			
		||||
	i18n(lang),
 | 
			
		||||
	license(),
 | 
			
		||||
	fa(),
 | 
			
		||||
	base64(),
 | 
			
		||||
	//base64(),
 | 
			
		||||
	themeColor(),
 | 
			
		||||
	vue(),
 | 
			
		||||
	stylus(),
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Inject license
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
			
		||||
import { licenseHtml } from '../../../src/common/build/license';
 | 
			
		||||
 | 
			
		||||
export default () => ({
 | 
			
		||||
	enforce: 'pre',
 | 
			
		||||
	test: /\.(vue|js)$/,
 | 
			
		||||
	exclude: /node_modules/,
 | 
			
		||||
	loader: StringReplacePlugin.replace({
 | 
			
		||||
		replacements: [{
 | 
			
		||||
			pattern: '%license%', replacement: () => licenseHtml
 | 
			
		||||
		}]
 | 
			
		||||
	})
 | 
			
		||||
});
 | 
			
		||||
@@ -2,24 +2,24 @@
 | 
			
		||||
 * Theme color provider
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
			
		||||
 | 
			
		||||
const constants = require('../../../src/const.json');
 | 
			
		||||
 | 
			
		||||
export default () => ({
 | 
			
		||||
	enforce: 'pre',
 | 
			
		||||
	test: /\.vue$/,
 | 
			
		||||
	exclude: /node_modules/,
 | 
			
		||||
	loader: StringReplacePlugin.replace({
 | 
			
		||||
		replacements: [
 | 
			
		||||
			{
 | 
			
		||||
				pattern: /\$theme\-color\-foreground/g,
 | 
			
		||||
				replacement: () => constants.themeColorForeground
 | 
			
		||||
			},
 | 
			
		||||
			{
 | 
			
		||||
				pattern: /\$theme\-color/g,
 | 
			
		||||
				replacement: () => constants.themeColor
 | 
			
		||||
			},
 | 
			
		||||
		]
 | 
			
		||||
	})
 | 
			
		||||
	use: [/*{
 | 
			
		||||
		loader: 'replace-string-loader',
 | 
			
		||||
		options: {
 | 
			
		||||
			search: /\$theme\-color\-foreground/g,
 | 
			
		||||
			replace: constants.themeColorForeground
 | 
			
		||||
		}
 | 
			
		||||
	}, */{
 | 
			
		||||
		loader: 'replace-string-loader',
 | 
			
		||||
		options: {
 | 
			
		||||
			search: '$theme-color',
 | 
			
		||||
			replace: constants.themeColor,
 | 
			
		||||
			flags: 'g'
 | 
			
		||||
		}
 | 
			
		||||
	}]
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
 | 
			
		||||
export default () => ({
 | 
			
		||||
	test: /\.ts$/,
 | 
			
		||||
	exclude: /node_modules/,
 | 
			
		||||
	loader: 'ts-loader',
 | 
			
		||||
	options: {
 | 
			
		||||
		configFile: __dirname + '/../../../src/web/app/tsconfig.json',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
import * as os from 'os';
 | 
			
		||||
import * as webpack from 'webpack';
 | 
			
		||||
 | 
			
		||||
export default version => new webpack.BannerPlugin({
 | 
			
		||||
	banner:
 | 
			
		||||
		`Misskey v${version} | MIT Licensed, (c) syuilo 2014-2018\n` +
 | 
			
		||||
		'https://github.com/syuilo/misskey\n' +
 | 
			
		||||
		`built by ${os.hostname()} at ${new Date()}\n` +
 | 
			
		||||
		'hash:[hash], chunkhash:[chunkhash]'
 | 
			
		||||
});
 | 
			
		||||
@@ -7,6 +7,7 @@ import * as webpack from 'webpack';
 | 
			
		||||
import version from '../../src/version';
 | 
			
		||||
const constants = require('../../src/const.json');
 | 
			
		||||
import config from '../../src/conf';
 | 
			
		||||
import { licenseHtml } from '../../src/common/build/license';
 | 
			
		||||
 | 
			
		||||
export default lang => {
 | 
			
		||||
	const consts = {
 | 
			
		||||
@@ -24,6 +25,7 @@ export default lang => {
 | 
			
		||||
		_LANG_: lang,
 | 
			
		||||
		_HOST_: config.host,
 | 
			
		||||
		_URL_: config.url,
 | 
			
		||||
		_LICENSE_: licenseHtml
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	const _consts = {};
 | 
			
		||||
@@ -32,7 +34,5 @@ export default lang => {
 | 
			
		||||
		_consts[key] = JSON.stringify(consts[key]);
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	return new webpack.DefinePlugin(Object.assign({}, _consts, {
 | 
			
		||||
		__CONSTS__: JSON.stringify(consts)
 | 
			
		||||
	}));
 | 
			
		||||
	return new webpack.DefinePlugin(_consts);
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,16 @@
 | 
			
		||||
const StringReplacePlugin = require('string-replace-webpack-plugin');
 | 
			
		||||
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
 | 
			
		||||
 | 
			
		||||
import consts from './consts';
 | 
			
		||||
import hoist from './hoist';
 | 
			
		||||
import minify from './minify';
 | 
			
		||||
import banner from './banner';
 | 
			
		||||
 | 
			
		||||
const env = process.env.NODE_ENV;
 | 
			
		||||
const isProduction = env === 'production';
 | 
			
		||||
 | 
			
		||||
export default (version, lang) => {
 | 
			
		||||
	const plugins = [
 | 
			
		||||
		consts(lang),
 | 
			
		||||
		new StringReplacePlugin()
 | 
			
		||||
		new HardSourceWebpackPlugin(),
 | 
			
		||||
		consts(lang)
 | 
			
		||||
	];
 | 
			
		||||
 | 
			
		||||
	if (isProduction) {
 | 
			
		||||
@@ -19,7 +18,5 @@ export default (version, lang) => {
 | 
			
		||||
		plugins.push(minify());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	plugins.push(banner(version));
 | 
			
		||||
 | 
			
		||||
	return plugins;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,9 @@ module.exports = Object.keys(langs).map(lang => {
 | 
			
		||||
				'.js', '.ts'
 | 
			
		||||
			]
 | 
			
		||||
		},
 | 
			
		||||
		cache: true
 | 
			
		||||
		cache: true,
 | 
			
		||||
		devtool: 'eval',
 | 
			
		||||
		stats: true,
 | 
			
		||||
		profile: true
 | 
			
		||||
	};
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user