Added closest.js to build config
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / js / require.build.js
1 (function () {
2 var config;
3 config = {
4 mainConfigFile: 'require.config.js',
5 name: "WoltLabSuite/_Meta",
6 out: "WoltLabSuite.Core.min.js",
7 useStrict: true,
8 preserveLicenseComments: false,
9 optimize: 'uglify2',
10 uglify2: {},
11 paths: {
12 "requireLib": "require",
13
14 "jquery": "empty:"
15 },
16 deps: [
17 "require.config",
18 "wcf.globalHelper"
19 ],
20 include: [
21 "closest",
22 "requireLib",
23 "require.linearExecution"
24 ],
25 excludeShallow: [
26 'WoltLabSuite/_Meta'
27 ],
28 rawText: {
29 'WoltLabSuite/_Meta': 'define([], function() {});'
30 },
31 onBuildRead: function(moduleName, path, contents) {
32 if (!process.versions.node) {
33 throw new Error('You need to run node.js');
34 }
35
36 if (moduleName === 'WoltLabSuite/_Meta') {
37 if (global.allModules == undefined) {
38 var fs = module.require('fs'),
39 path = module.require('path');
40 global.allModules = [];
41
42 var queue = ['WoltLabSuite'];
43 var folder;
44 while (folder = queue.shift()) {
45 var files = fs.readdirSync(folder);
46 for (var i = 0; i < files.length; i++) {
47 var filename = path.join(folder, files[i]);
48 if (filename === 'WoltLabSuite/Core/Acp') continue;
49
50 if (path.extname(filename) == '.js') {
51 global.allModules.push(filename);
52 }
53 else if (fs.statSync(filename).isDirectory()) {
54 queue.push(filename);
55 }
56 }
57 }
58 }
59
60 return 'define([' + global.allModules.map(function (item) { return "'" + item.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/\.js$/, '') + "'"; }).join(', ') + '], function() { });';
61 }
62
63 return contents;
64 }
65 };
66
67 var _isSupportedBuildUrl = require._isSupportedBuildUrl;
68 require._isSupportedBuildUrl = function (url) {
69 var result = _isSupportedBuildUrl(url);
70 if (!result) return result;
71 if (Object.keys(config.rawText).map(function (item) { return process.cwd() + '/' + item + '.js'; }).indexOf(url) !== -1) return result;
72
73 var fs = module.require('fs');
74 try {
75 fs.statSync(url);
76 }
77 catch (e) {
78 console.log('Unable to find module:', url, 'ignoring.');
79
80 return false;
81 }
82 return true;
83 };
84
85 return config;
86 })();