From d021dc34820afe23a46fa3d7f27b743fd332cef7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim=20D=C3=BCsterhus?= Date: Thu, 21 May 2015 00:22:50 +0200 Subject: [PATCH] Automatically scan all modules in require.build.js --- wcfsetup/install/files/js/require.build.js | 50 +++++++++++++++++++--- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/wcfsetup/install/files/js/require.build.js b/wcfsetup/install/files/js/require.build.js index 3f36e59be7..43c40b2624 100644 --- a/wcfsetup/install/files/js/require.build.js +++ b/wcfsetup/install/files/js/require.build.js @@ -1,14 +1,54 @@ ({ mainConfigFile: 'require.config.js', - name: "WoltLab/WCF/Bootstrap", - out: "WCF.Combined.min.js", + name: "WoltLab/_Meta", + out: "WCF.Core.min.js", useStrict: true, + preserveLicenseComments: false, + optimize: 'uglify2', + uglify2: {}, paths: { "requireLib": "require", - "jquery": "empty:" + "jquery": "empty:", }, include: [ - "requireLib" - ] + "requireLib", + ], + excludeShallow: [ + 'WoltLab/_Meta', + ], + rawText: { + 'WoltLab/_Meta': 'define([], function () {});', + }, + onBuildRead: function (moduleName, path, contents) { + if (!process.versions.node) { + throw new Error('You need to run node.js'); + } + + if (moduleName === 'WoltLab/_Meta') { + if (global.allModules == undefined) { + var fs = module.require('fs') + , path = module.require('path'); + global.allModules = []; + var queue = [ 'WoltLab' ]; + var folder; + while (folder = queue.shift()) { + var files = fs.readdirSync(folder); + for (var i = 0; i < files.length; i++) { + var filename = path.join(folder, files[i]); + if (path.extname(filename) == '.js') { + global.allModules.push(filename); + } + else if (fs.statSync(filename).isDirectory()) { + queue.push(filename); + } + } + } + } + + return 'define([' + global.allModules.map(function (item) { return "'" + item.replace(/\\/g, '\\\\').replace(/'/g, "\\'") + "'"; }).join(', ') + '], function () { });'; + } + + return contents; + }, }) -- 2.20.1