mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-11 16:35:47 +01:00
Updated js code so vendors can be added to the modules folder, so
they can be required properly and we can finally get rid of that really annoying "mismatched anonymous" error in Require.js. First module to make the transition: Chart.js
This commit is contained in:
@@ -57,7 +57,7 @@ module.exports = function(grunt) {
|
|||||||
files: ['public/**/*.less', 'node_modules/nodebb-*/*.less', 'node_modules/nodebb-*/*/*.less', 'node_modules/nodebb-*/*/*/*.less', 'node_modules/nodebb-*/*/*/*/*.less']
|
files: ['public/**/*.less', 'node_modules/nodebb-*/*.less', 'node_modules/nodebb-*/*/*.less', 'node_modules/nodebb-*/*/*/*.less', 'node_modules/nodebb-*/*/*/*/*.less']
|
||||||
},
|
},
|
||||||
clientUpdated: {
|
clientUpdated: {
|
||||||
files: ['public/src/**/*.js', 'node_modules/nodebb-*/*.js', 'node_modules/nodebb-*/*/*.js', 'node_modules/nodebb-*/*/*/*.js', 'node_modules/nodebb-*/*/*/*/*.js', 'node_modules/templates.js/lib/templates.js']
|
files: ['public/src/**/*.js', '!public/src/modules/*.js', 'node_modules/nodebb-*/*.js', 'node_modules/nodebb-*/*/*.js', 'node_modules/nodebb-*/*/*/*.js', 'node_modules/nodebb-*/*/*/*/*.js', 'node_modules/templates.js/lib/templates.js']
|
||||||
},
|
},
|
||||||
serverUpdated: {
|
serverUpdated: {
|
||||||
files: ['*.js', 'install/*.js', 'src/**/*.js']
|
files: ['*.js', 'install/*.js', 'src/**/*.js']
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
"autoprefixer": "^6.2.3",
|
"autoprefixer": "^6.2.3",
|
||||||
"bcryptjs": "~2.3.0",
|
"bcryptjs": "~2.3.0",
|
||||||
"body-parser": "^1.9.0",
|
"body-parser": "^1.9.0",
|
||||||
|
"chart.js": "^1.0.2",
|
||||||
"colors": "^1.1.0",
|
"colors": "^1.1.0",
|
||||||
"compression": "^1.1.0",
|
"compression": "^1.1.0",
|
||||||
"connect-ensure-login": "^0.1.1",
|
"connect-ensure-login": "^0.1.1",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/*global define, ajaxify, app, socket, utils, bootbox, Chart, RELATIVE_PATH*/
|
/*global define, ajaxify, app, socket, utils, bootbox, RELATIVE_PATH*/
|
||||||
|
|
||||||
define('admin/general/dashboard', ['semver'], function(semver) {
|
define('admin/general/dashboard', ['semver', 'Chart'], function(semver, Chart) {
|
||||||
var Admin = {},
|
var Admin = {},
|
||||||
intervals = {
|
intervals = {
|
||||||
rooms: false,
|
rooms: false,
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/*global define, app, socket, ajaxify, RELATIVE_PATH, bootbox, templates, Chart */
|
/*global define, app, socket, ajaxify, RELATIVE_PATH, bootbox, templates */
|
||||||
|
|
||||||
define('admin/manage/category', [
|
define('admin/manage/category', [
|
||||||
'uploader',
|
'uploader',
|
||||||
'iconSelect',
|
'iconSelect',
|
||||||
'admin/modules/colorpicker',
|
'admin/modules/colorpicker',
|
||||||
'autocomplete'
|
'autocomplete',
|
||||||
], function(uploader, iconSelect, colorpicker, autocomplete) {
|
'Chart'
|
||||||
|
], function(uploader, iconSelect, colorpicker, autocomplete, Chart) {
|
||||||
var Category = {};
|
var Category = {};
|
||||||
|
|
||||||
Category.init = function() {
|
Category.init = function() {
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ var async = require('async'),
|
|||||||
async.apply(plugins.reloadRoutes),
|
async.apply(plugins.reloadRoutes),
|
||||||
function(next) {
|
function(next) {
|
||||||
async.parallel([
|
async.parallel([
|
||||||
|
async.apply(Meta.js.symlinkModules),
|
||||||
async.apply(Meta.js.minify, 'nodebb.min.js'),
|
async.apply(Meta.js.minify, 'nodebb.min.js'),
|
||||||
async.apply(Meta.js.minify, 'acp.min.js'),
|
async.apply(Meta.js.minify, 'acp.min.js'),
|
||||||
async.apply(Meta.css.minify),
|
async.apply(Meta.css.minify),
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ var winston = require('winston'),
|
|||||||
_ = require('underscore'),
|
_ = require('underscore'),
|
||||||
nconf = require('nconf'),
|
nconf = require('nconf'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
|
rimraf = require('rimraf'),
|
||||||
file = require('../file'),
|
file = require('../file'),
|
||||||
plugins = require('../plugins'),
|
plugins = require('../plugins'),
|
||||||
emitter = require('../emitter'),
|
emitter = require('../emitter'),
|
||||||
@@ -43,6 +44,8 @@ module.exports = function(Meta) {
|
|||||||
'public/src/variables.js',
|
'public/src/variables.js',
|
||||||
'public/src/widgets.js'
|
'public/src/widgets.js'
|
||||||
],
|
],
|
||||||
|
|
||||||
|
// files listed below are only available client-side, or are bundled in to reduce # of network requests on cold load
|
||||||
rjs: [
|
rjs: [
|
||||||
'public/src/client/footer.js',
|
'public/src/client/footer.js',
|
||||||
'public/src/client/chats.js',
|
'public/src/client/chats.js',
|
||||||
@@ -77,10 +80,51 @@ module.exports = function(Meta) {
|
|||||||
'public/src/modules/helpers.js',
|
'public/src/modules/helpers.js',
|
||||||
'public/src/modules/sounds.js',
|
'public/src/modules/sounds.js',
|
||||||
'public/src/modules/string.js'
|
'public/src/modules/string.js'
|
||||||
|
],
|
||||||
|
|
||||||
|
// modules listed below are symlinked to public/src/modules so they can be defined anonymously
|
||||||
|
modules: [
|
||||||
|
'./node_modules/chart.js/Chart.js'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Meta.js.symlinkModules = function(callback) {
|
||||||
|
// Symlink all defined modules to /public/src/modules
|
||||||
|
var modulesLoaded = 0,
|
||||||
|
targetPath;
|
||||||
|
|
||||||
|
async.series([
|
||||||
|
function(next) {
|
||||||
|
async.each(Meta.js.scripts.modules, function(localPath, next) {
|
||||||
|
targetPath = path.join(__dirname, '../../public/src/modules', path.basename(localPath));
|
||||||
|
|
||||||
|
async.waterfall([
|
||||||
|
async.apply(fs.access, localPath, fs.R_OK),
|
||||||
|
async.apply(rimraf, targetPath),
|
||||||
|
async.apply(fs.link, localPath, targetPath)
|
||||||
|
], function(err) {
|
||||||
|
if (err) {
|
||||||
|
winston.error('[meta/js] Could not symlink `' + localPath + '` to modules folder');
|
||||||
|
} else {
|
||||||
|
winston.verbose('[meta/js] Symlinked `' + localPath + '` to modules folder');
|
||||||
|
++modulesLoaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
next(err);
|
||||||
|
});
|
||||||
|
}, next);
|
||||||
|
}
|
||||||
|
], function(err) {
|
||||||
|
if (err) {
|
||||||
|
winston.error('[meta/js] Encountered error while symlinking modules:' + err.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
winston.verbose('[meta/js] ' + modulesLoaded + ' of ' + Meta.js.scripts.modules.length + ' modules symlinked');
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
Meta.js.minify = function(target, callback) {
|
Meta.js.minify = function(target, callback) {
|
||||||
if (nconf.get('isPrimary') !== 'true') {
|
if (nconf.get('isPrimary') !== 'true') {
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
||||||
<script src="https://storage.googleapis.com/code.getmdl.io/1.0.3/material.min.js"></script>
|
<script src="https://storage.googleapis.com/code.getmdl.io/1.0.3/material.min.js"></script>
|
||||||
<script type="text/javascript" src="{relative_path}/vendor/chart.js/chart.min.js?{cache-buster}"></script>
|
|
||||||
<script type="text/javascript" src="{relative_path}/vendor/hammer/hammer.min.js?{cache-buster}"></script>
|
<script type="text/javascript" src="{relative_path}/vendor/hammer/hammer.min.js?{cache-buster}"></script>
|
||||||
<script type="text/javascript" src="{relative_path}/vendor/jquery/sortable/Sortable.js?{cache-buster}"></script>
|
<script type="text/javascript" src="{relative_path}/vendor/jquery/sortable/Sortable.js?{cache-buster}"></script>
|
||||||
<script type="text/javascript" src="{relative_path}/acp.min.js?{cache-buster}"></script>
|
<script type="text/javascript" src="{relative_path}/acp.min.js?{cache-buster}"></script>
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ function initializeNodeBB(callback) {
|
|||||||
function(next) {
|
function(next) {
|
||||||
async.parallel([
|
async.parallel([
|
||||||
async.apply(meta.templates.compile),
|
async.apply(meta.templates.compile),
|
||||||
|
async.apply(meta.js.symlinkModules),
|
||||||
async.apply(!skipJS ? meta.js.minify : meta.js.getFromFile, 'nodebb.min.js'),
|
async.apply(!skipJS ? meta.js.minify : meta.js.getFromFile, 'nodebb.min.js'),
|
||||||
async.apply(!skipJS ? meta.js.minify : meta.js.getFromFile, 'acp.min.js'),
|
async.apply(!skipJS ? meta.js.minify : meta.js.getFromFile, 'acp.min.js'),
|
||||||
async.apply(!skipLess ? meta.css.minify : meta.css.getFromFile),
|
async.apply(!skipLess ? meta.css.minify : meta.css.getFromFile),
|
||||||
|
|||||||
Reference in New Issue
Block a user