| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | 
							- process.env.NODE_CONFIG_DIR = `${__dirname}/dist/config/`;
 
- const path = require("path");
 
- const fs = require("fs");
 
- const config = require("config");
 
- const { VueLoaderPlugin } = require("vue-loader");
 
- const HtmlWebpackPlugin = require("html-webpack-plugin");
 
- const ESLintPlugin = require("eslint-webpack-plugin");
 
- const fetchVersionAndGitInfo = cb => {
 
- 	const debug = {
 
- 		git: {
 
- 			remote: "",
 
- 			remoteUrl: "",
 
- 			branch: "",
 
- 			latestCommit: "",
 
- 			latestCommitShort: ""
 
- 		},
 
- 		version: ""
 
- 	};
 
- 	try {
 
- 		const packageJson = JSON.parse(
 
- 			fs.readFileSync("./package.json").toString()
 
- 		);
 
- 		const headContents = fs
 
- 			.readFileSync(".parent_git/HEAD")
 
- 			.toString()
 
- 			.replace(/\n/g, "");
 
- 		const branch = new RegExp("ref: refs/heads/([.A-Za-z0-9_-]+)").exec(
 
- 			headContents
 
- 		)[1];
 
- 		const configContents = fs
 
- 			.readFileSync(".parent_git/config")
 
- 			.toString()
 
- 			.replace(/\t/g, "")
 
- 			.split("\n");
 
- 		const remote = new RegExp("remote = (.+)").exec(
 
- 			configContents[configContents.indexOf(`[branch "${branch}"]`) + 1]
 
- 		)[1];
 
- 		const remoteUrl = new RegExp("url = (.+)").exec(
 
- 			configContents[configContents.indexOf(`[remote "${remote}"]`) + 1]
 
- 		)[1];
 
- 		const latestCommit = fs
 
- 			.readFileSync(`.parent_git/refs/heads/${branch}`)
 
- 			.toString()
 
- 			.replace(/\n/g, "");
 
- 		const latestCommitShort = latestCommit.substr(0, 7);
 
- 		console.log(`Musare version: ${packageJson.version}.`);
 
- 		console.log(
 
- 			`Git branch: ${remote}/${branch}. Remote url: ${remoteUrl}. Latest commit: ${latestCommit} (${latestCommitShort}).`
 
- 		);
 
- 		if (config.get("debug.version")) debug.version = packageJson.version;
 
- 		if (config.get("debug.git.remote")) debug.git.remote = remote;
 
- 		if (config.get("debug.git.remoteUrl")) debug.git.remoteUrl = remoteUrl;
 
- 		if (config.get("debug.git.branch")) debug.git.branch = branch;
 
- 		if (config.get("debug.git.latestCommit"))
 
- 			debug.git.latestCommit = latestCommit;
 
- 		if (config.get("debug.git.latestCommitShort"))
 
- 			debug.git.latestCommitShort = latestCommitShort;
 
- 	} catch (e) {
 
- 		console.log(`Could not get Git info: ${e.message}.`);
 
- 	}
 
- 	cb(debug);
 
- };
 
- fetchVersionAndGitInfo(() => {});
 
- class InsertDebugInfoPlugin {
 
- 	apply(compiler) {
 
- 		compiler.hooks.compilation.tap("InsertDebugInfoPlugin", compilation => {
 
- 			HtmlWebpackPlugin.getHooks(
 
- 				compilation
 
- 			).beforeAssetTagGeneration.tapAsync(
 
- 				"InsertDebugInfoPlugin",
 
- 				(data, cb) => {
 
- 					fetchVersionAndGitInfo(debug => {
 
- 						data.plugin.userOptions.debug.version = debug.version;
 
- 						data.plugin.userOptions.debug.git.remote =
 
- 							debug.git.remote;
 
- 						data.plugin.userOptions.debug.git.remoteUrl =
 
- 							debug.git.remoteUrl;
 
- 						data.plugin.userOptions.debug.git.branch =
 
- 							debug.git.branch;
 
- 						data.plugin.userOptions.debug.git.latestCommit =
 
- 							debug.git.latestCommit;
 
- 						data.plugin.userOptions.debug.git.latestCommitShort =
 
- 							debug.git.latestCommitShort;
 
- 						cb(null, data);
 
- 					});
 
- 				}
 
- 			);
 
- 		});
 
- 	}
 
- }
 
- module.exports = {
 
- 	entry: "./src/main.js",
 
- 	output: {
 
- 		path: `${__dirname}/dist/build/`,
 
- 		filename: "[name].[contenthash].js"
 
- 	},
 
- 	resolve: {
 
- 		alias: {
 
- 			"@": path.resolve(__dirname, "./src/")
 
- 		},
 
- 		extensions: [".js", ".vue"]
 
- 	},
 
- 	plugins: [
 
- 		new VueLoaderPlugin(),
 
- 		new HtmlWebpackPlugin({
 
- 			hash: true,
 
- 			template: "dist/index.tpl.html",
 
- 			inject: "body",
 
- 			filename: "index.html",
 
- 			debug: {
 
- 				git: {
 
- 					remote: "",
 
- 					remoteUrl: "",
 
- 					branch: "",
 
- 					latestCommit: "",
 
- 					latestCommitShort: ""
 
- 				},
 
- 				version: ""
 
- 			}
 
- 		}),
 
- 		new ESLintPlugin(),
 
- 		new InsertDebugInfoPlugin()
 
- 	],
 
- 	module: {
 
- 		rules: [
 
- 			{
 
- 				test: /\.vue$/,
 
- 				loader: "vue-loader",
 
- 				exclude: /node_modules/
 
- 			},
 
- 			{
 
- 				test: /\.js$/,
 
- 				loader: "babel-loader",
 
- 				exclude: /node_modules/
 
- 			},
 
- 			{
 
- 				test: /\.less$/i,
 
- 				exclude: /node_modules/,
 
- 				use: [
 
- 					"vue-style-loader",
 
- 					{
 
- 						loader: "css-loader",
 
- 						options: {
 
- 							url: false
 
- 						}
 
- 					},
 
- 					"less-loader",
 
- 					{
 
- 						loader: "style-resources-loader",
 
- 						options: {
 
- 							patterns: [
 
- 								path.resolve(
 
- 									__dirname,
 
- 									"./src/styles/variables.less"
 
- 								)
 
- 							]
 
- 						}
 
- 					}
 
- 				]
 
- 			}
 
- 		]
 
- 	}
 
- };
 
 
  |