mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-30 18:46:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const path = require('path');
 | |
| const url = require('url');
 | |
| const nconf = require('nconf');
 | |
| 
 | |
| const activePlugins = require('./build/active_plugins.json');
 | |
| 
 | |
| let relativePath = nconf.get('relative_path');
 | |
| if (relativePath === undefined) {
 | |
| 	nconf.file({
 | |
| 		file: path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'),
 | |
| 	});
 | |
| 
 | |
| 	const urlObject = url.parse(nconf.get('url'));
 | |
| 	relativePath = urlObject.pathname !== '/' ? urlObject.pathname.replace(/\/+$/, '') : '';
 | |
| }
 | |
| 
 | |
| /** @type { import('webpack').Configuration } */
 | |
| module.exports = {
 | |
| 	plugins: [],
 | |
| 	entry: {
 | |
| 		nodebb: './build/public/src/client.js',
 | |
| 		admin: './build/public/src/admin/admin.js',
 | |
| 	},
 | |
| 	output: {
 | |
| 		filename: '[name].min.js',
 | |
| 		chunkFilename: '[name].[contenthash].min.js',
 | |
| 		path: path.resolve(__dirname, 'build/public'),
 | |
| 		publicPath: `${relativePath}/assets/`,
 | |
| 		clean: {
 | |
| 			keep(asset) {
 | |
| 				return asset === 'installer.min.js' ||
 | |
| 					!asset.endsWith('.min.js');
 | |
| 			},
 | |
| 		},
 | |
| 	},
 | |
| 	snapshot: {
 | |
| 		managedPaths: [new RegExp(`^(.+?[\\\\/]node_modules)[\\\\/](?!${activePlugins.join('|')})`)],
 | |
| 	},
 | |
| 	watchOptions: {
 | |
| 		poll: 500,
 | |
| 		aggregateTimeout: 250,
 | |
| 	},
 | |
| 	performance: {
 | |
| 		maxEntrypointSize: 512000,
 | |
| 		maxAssetSize: 1024000,
 | |
| 	},
 | |
| 	resolve: {
 | |
| 		symlinks: false,
 | |
| 		modules: [
 | |
| 			'build/public/src/modules',
 | |
| 			'build/public/src',
 | |
| 			'node_modules',
 | |
| 			...activePlugins.map(p => `node_modules/${p}/node_modules`),
 | |
| 		],
 | |
| 		alias: {
 | |
| 			assets: path.resolve(__dirname, 'build/public'),
 | |
| 			forum: path.resolve(__dirname, 'build/public/src/client'),
 | |
| 			admin: path.resolve(__dirname, 'build/public/src/admin'),
 | |
| 			vendor: path.resolve(__dirname, 'public/vendor'),
 | |
| 			benchpress: path.resolve(__dirname, 'node_modules/benchpressjs'),
 | |
| 			Sortable: path.resolve(__dirname, 'node_modules/sortablejs'),
 | |
| 			cropper: path.resolve(__dirname, 'node_modules/cropperjs'),
 | |
| 			'jquery-ui/widgets': path.resolve(__dirname, 'node_modules/jquery-ui/ui/widgets'),
 | |
| 			'ace/ace': path.resolve(__dirname, 'build/public/src/modules/ace-editor.js'),
 | |
| 		},
 | |
| 	},
 | |
| };
 |