mirror of
				https://github.com/tobspr/shapez.io.git
				synced 2025-06-13 13:04:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // @ts-nocheck
 | |
| 
 | |
| const path = require("path");
 | |
| const webpack = require("webpack");
 | |
| const { getRevision, getVersion, getAllResourceImages } = require("./buildutils");
 | |
| const lzString = require("lz-string");
 | |
| const CircularDependencyPlugin = require("circular-dependency-plugin");
 | |
| 
 | |
| module.exports = ({ watch = false, standalone = false }) => {
 | |
|     return {
 | |
|         mode: "development",
 | |
|         devtool: "cheap-source-map",
 | |
|         entry: {
 | |
|             "bundle.js": [path.resolve(__dirname, "../src/js/main.js")],
 | |
|         },
 | |
|         watch,
 | |
|         node: {
 | |
|             fs: "empty",
 | |
|         },
 | |
|         resolve: {
 | |
|             alias: {
 | |
|                 "global-compression": path.resolve(__dirname, "..", "src", "js", "core", "lzstring.js"),
 | |
|             },
 | |
|         },
 | |
|         context: path.resolve(__dirname, ".."),
 | |
|         plugins: [
 | |
|             new webpack.DefinePlugin({
 | |
|                 assert: "window.assert",
 | |
|                 assertAlways: "window.assert",
 | |
|                 abstract:
 | |
|                     "window.assert(false, 'abstract method called of: ' + (this.name || (this.constructor && this.constructor.name)));",
 | |
|                 G_HAVE_ASSERT: "true",
 | |
|                 G_APP_ENVIRONMENT: JSON.stringify("dev"),
 | |
|                 G_TRACKING_ENDPOINT: JSON.stringify(
 | |
|                     lzString.compressToEncodedURIComponent("http://localhost:10005/v1")
 | |
|                 ),
 | |
|                 G_IS_DEV: "true",
 | |
|                 G_IS_RELEASE: "false",
 | |
|                 G_IS_MOBILE_APP: "false",
 | |
|                 G_IS_BROWSER: "true",
 | |
|                 G_IS_STANDALONE: standalone ? "true" : "false",
 | |
|                 G_BUILD_TIME: "" + new Date().getTime(),
 | |
|                 G_BUILD_COMMIT_HASH: JSON.stringify(getRevision()),
 | |
|                 G_BUILD_VERSION: JSON.stringify(getVersion()),
 | |
|                 G_ALL_UI_IMAGES: JSON.stringify(getAllResourceImages()),
 | |
|             }),
 | |
| 
 | |
|             new CircularDependencyPlugin({
 | |
|                 // exclude detection of files based on a RegExp
 | |
|                 exclude: /node_modules/,
 | |
| 
 | |
|                 // add errors to webpack instead of warnings
 | |
|                 failOnError: true,
 | |
| 
 | |
|                 // allow import cycles that include an asyncronous import,
 | |
|                 // e.g. via import(/* webpackMode: "weak" */ './file.js')
 | |
|                 allowAsyncCycles: false,
 | |
| 
 | |
|                 // set the current working directory for displaying module paths
 | |
|                 cwd: path.join(__dirname, "..", "src", "js"),
 | |
|             }),
 | |
|         ],
 | |
|         module: {
 | |
|             rules: [
 | |
|                 {
 | |
|                     test: /\.json$/,
 | |
|                     enforce: "pre",
 | |
|                     use: ["./gulp/loader.compressjson"],
 | |
|                     type: "javascript/auto",
 | |
|                 },
 | |
|                 { test: /\.(png|jpe?g|svg)$/, loader: "ignore-loader" },
 | |
|                 {
 | |
|                     test: /\.md$/,
 | |
|                     use: [
 | |
|                         {
 | |
|                             loader: "html-loader",
 | |
|                         },
 | |
|                         "markdown-loader",
 | |
|                     ],
 | |
|                 },
 | |
|                 {
 | |
|                     test: /\.js$/,
 | |
|                     enforce: "pre",
 | |
|                     exclude: /node_modules/,
 | |
|                     use: [
 | |
|                         {
 | |
|                             loader: "webpack-strip-block",
 | |
|                             options: {
 | |
|                                 start: "typehints:start",
 | |
|                                 end: "typehints:end",
 | |
|                             },
 | |
|                         },
 | |
|                     ],
 | |
|                 },
 | |
|                 {
 | |
|                     test: /\.worker\.js$/,
 | |
|                     use: {
 | |
|                         loader: "worker-loader",
 | |
|                         options: {
 | |
|                             fallback: false,
 | |
|                             inline: true,
 | |
|                         },
 | |
|                     },
 | |
|                 },
 | |
|                 {
 | |
|                     test: /\.ya?ml$/,
 | |
|                     type: "json", // Required by Webpack v4
 | |
|                     use: "yaml-loader",
 | |
|                 },
 | |
|             ],
 | |
|         },
 | |
|         output: {
 | |
|             filename: "bundle.js",
 | |
|             path: path.resolve(__dirname, "..", "build"),
 | |
|         },
 | |
|     };
 | |
| };
 |