| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2022-09-29 12:02:41 +02:00
										 |  |  | 	GoToSocial | 
					
						
							| 
									
										
										
										
											2023-03-12 18:49:06 +01:00
										 |  |  | 	Copyright (C) GoToSocial Authors admin@gotosocial.org | 
					
						
							|  |  |  | 	SPDX-License-Identifier: AGPL-3.0-or-later | 
					
						
							| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-29 12:02:41 +02:00
										 |  |  | 	This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  | 	it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  | 	the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | 	(at your option) any later version. | 
					
						
							| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-29 12:02:41 +02:00
										 |  |  | 	This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | 	but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | 	GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-29 12:02:41 +02:00
										 |  |  | 	You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  | 	along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | const skulk = require("skulk"); | 
					
						
							|  |  |  | const path = require("path"); | 
					
						
							| 
									
										
										
										
											2024-11-05 15:52:45 +01:00
										 |  |  | const { globSync } = require("glob"); | 
					
						
							| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-05 15:52:45 +01:00
										 |  |  | const cssDir = path.join(__dirname, "./css"); | 
					
						
							|  |  |  | const cssFiles = globSync(cssDir + "/**/*.css", { ignore: cssDir + "/themes/**" }); | 
					
						
							|  |  |  | const cssThemes = globSync(cssDir + "/themes/**/*.css"); | 
					
						
							| 
									
										
										
										
											2022-06-09 12:51:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | const prodCfg = { | 
					
						
							|  |  |  | 	transform: [ | 
					
						
							| 
									
										
										
										
											2023-05-11 17:46:32 +02:00
										 |  |  | 		["@browserify/uglifyify", { | 
					
						
							| 
									
										
										
										
											2022-10-03 16:46:38 +02:00
										 |  |  | 			global: true, | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 			exts: ".js" | 
					
						
							|  |  |  | 		}], | 
					
						
							| 
									
										
										
										
											2023-01-18 14:45:14 +01:00
										 |  |  | 		["@browserify/envify", { global: true }] | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 	] | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | skulk({ | 
					
						
							|  |  |  | 	name: "GoToSocial", | 
					
						
							|  |  |  | 	basePath: __dirname, | 
					
						
							|  |  |  | 	assetPath: "../assets/", | 
					
						
							|  |  |  | 	prodCfg: { | 
					
						
							|  |  |  | 		servers: { | 
					
						
							|  |  |  | 			express: false, | 
					
						
							|  |  |  | 			livereload: false | 
					
						
							| 
									
										
										
										
											2022-10-03 16:46:38 +02:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	}, | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 	servers: { | 
					
						
							|  |  |  | 		express: { | 
					
						
							| 
									
										
										
										
											2024-11-05 22:35:07 +01:00
										 |  |  | 			proxy: { | 
					
						
							|  |  |  | 				target: "http://127.0.0.1:8081", | 
					
						
							|  |  |  | 				onProxyRes: (proxyRes) => { | 
					
						
							|  |  |  | 					// CSP header prevents react-devtools and redux-devtools extensions from working
 | 
					
						
							|  |  |  | 					delete proxyRes.headers['content-security-policy']; | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2022-10-03 16:46:38 +02:00
										 |  |  | 	}, | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 	bundles: { | 
					
						
							|  |  |  | 		frontend: { | 
					
						
							|  |  |  | 			entryFile: "frontend", | 
					
						
							|  |  |  | 			outputFile: "frontend.js", | 
					
						
							|  |  |  | 			preset: ["js"], | 
					
						
							|  |  |  | 			prodCfg: prodCfg, | 
					
						
							|  |  |  | 			transform: [ | 
					
						
							|  |  |  | 				["babelify", { | 
					
						
							|  |  |  | 					global: true, | 
					
						
							|  |  |  | 					ignore: [/node_modules\/(?!(photoswipe.*))/] | 
					
						
							|  |  |  | 				}] | 
					
						
							|  |  |  | 			], | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 		settings: { | 
					
						
							|  |  |  | 			entryFile: "settings", | 
					
						
							|  |  |  | 			outputFile: "settings.js", | 
					
						
							|  |  |  | 			prodCfg: prodCfg, | 
					
						
							| 
									
										
										
										
											2023-10-05 16:06:19 +02:00
										 |  |  | 			plugin: [ | 
					
						
							|  |  |  | 				// Additional settings for TS are passed from tsconfig.json.
 | 
					
						
							|  |  |  | 				// See: https://github.com/TypeStrong/tsify#tsconfigjson
 | 
					
						
							|  |  |  | 				["tsify"] | 
					
						
							|  |  |  | 			], | 
					
						
							| 
									
										
										
										
											2023-02-03 12:07:40 +01:00
										 |  |  | 			transform: [ | 
					
						
							| 
									
										
										
										
											2023-10-05 16:06:19 +02:00
										 |  |  | 				// tsify is called before babelify, so we're just babelifying
 | 
					
						
							|  |  |  | 				// commonjs here, no need for the typescript preset.
 | 
					
						
							| 
									
										
										
										
											2023-02-03 12:07:40 +01:00
										 |  |  | 				["babelify", { | 
					
						
							|  |  |  | 					global: true, | 
					
						
							| 
									
										
										
										
											2024-04-24 12:12:47 +02:00
										 |  |  | 					ignore: [/node_modules\/(?!(nanoid)|(wouter))/], | 
					
						
							| 
									
										
										
										
											2023-02-03 12:07:40 +01:00
										 |  |  | 				}] | 
					
						
							|  |  |  | 			], | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 			presets: [ | 
					
						
							|  |  |  | 				"react", | 
					
						
							|  |  |  | 				["postcss", { | 
					
						
							|  |  |  | 					output: "settings-style.css" | 
					
						
							|  |  |  | 				}] | 
					
						
							|  |  |  | 			] | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2024-11-05 15:52:45 +01:00
										 |  |  | 		cssThemes: { | 
					
						
							|  |  |  | 			entryFiles: cssThemes, | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 			outputFile: "_discard", | 
					
						
							|  |  |  | 			presets: [["postcss", { | 
					
						
							|  |  |  | 				output: "_split" | 
					
						
							|  |  |  | 			}]] | 
					
						
							| 
									
										
										
										
											2024-11-05 15:52:45 +01:00
										 |  |  | 		}, | 
					
						
							|  |  |  | 		css: { | 
					
						
							|  |  |  | 			entryFiles: cssFiles, | 
					
						
							|  |  |  | 			outputFile: "_discard", | 
					
						
							|  |  |  | 			presets: [["postcss", { | 
					
						
							|  |  |  | 				output: "style.css" | 
					
						
							|  |  |  | 			}]] | 
					
						
							| 
									
										
										
										
											2022-11-02 16:31:43 +01:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2022-10-03 16:46:38 +02:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2024-04-25 18:24:24 +02:00
										 |  |  | }); |