Grunt active plugins (#7677)

* feat: only watch active plugins/themes

* fix: remove log

* fix: remove left over glob

* fix: remove test glob

* feat: watch baseThemes as well

* feat: dont watch upgrade scripts
v1.18.x
Barış Soner Uşaklı 6 years ago committed by GitHub
parent 5995834bc6
commit a6b7770342
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,5 +1,7 @@
'use strict'; 'use strict';
var async = require('async');
var fork = require('child_process').fork; var fork = require('child_process').fork;
var env = process.env; var env = process.env;
var worker; var worker;
@ -10,6 +12,26 @@ var running = 0;
env.NODE_ENV = env.NODE_ENV || 'development'; env.NODE_ENV = env.NODE_ENV || 'development';
var nconf = require('nconf');
nconf.file({
file: 'config.json',
});
nconf.defaults({
base_dir: __dirname,
views_dir: './build/public/templates',
});
var winston = require('winston');
winston.configure({
transports: [
new winston.transports.Console({
handleExceptions: true,
}),
],
});
var db = require('./src/database');
module.exports = function (grunt) { module.exports = function (grunt) {
var args = []; var args = [];
var initArgs = ['--build']; var initArgs = ['--build'];
@ -70,80 +92,112 @@ module.exports = function (grunt) {
} }
grunt.initConfig({ grunt.initConfig({
watch: { watch: {},
lessUpdated_Client: { });
files: [
'public/less/*.less', grunt.loadNpmTasks('grunt-contrib-watch');
'!public/less/admin/**/*.less',
'node_modules/nodebb-*/**/*.less', grunt.registerTask('default', ['watch']);
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**', grunt.registerTask('init', function () {
], var done = this.async();
options: { async.waterfall([
interval: 1000, function (next) {
}, db.init(next);
},
lessUpdated_Admin: {
files: [
'public/less/admin/**/*.less',
'node_modules/nodebb-*/**/*.less',
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
clientUpdated: {
files: [
'public/src/**/*.js',
'node_modules/nodebb-*/**/*.js',
'!node_modules/nodebb-*/node_modules/**',
'node_modules/benchpressjs/build/benchpress.js',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
}, },
serverUpdated: { function (next) {
files: ['*.js', 'install/*.js', 'src/**/*.js'], db.getSortedSetRange('plugins:active', 0, -1, next);
options: {
interval: 1000,
},
}, },
templatesUpdated: { function (plugins, next) {
files: [ addBaseThemes(plugins, next);
'src/views/**/*.tpl',
'node_modules/nodebb-*/**/*.tpl',
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
}, },
langUpdated: { function (plugins, next) {
files: [ if (!plugins.includes('nodebb-plugin-composer-default')) {
'public/language/en-GB/*.json', plugins.push('nodebb-plugin-composer-default');
'public/language/en-GB/**/*.json', }
'node_modules/nodebb-*/**/*.json',
'!node_modules/nodebb-*/node_modules/**', const lessUpdated_Client = plugins.map(p => 'node_modules/' + p + '/**/*.less');
'!node_modules/nodebb-*/.git/**', const lessUpdated_Admin = plugins.map(p => 'node_modules/' + p + '/**/*.less');
'!node_modules/nodebb-*/plugin.json', const clientUpdated = plugins.map(p => 'node_modules/' + p + '/**/*.js');
'!node_modules/nodebb-*/package.json', const templatesUpdated = plugins.map(p => 'node_modules/' + p + '/**/*.tpl');
'!node_modules/nodebb-*/theme.json', const langUpdated = plugins.map(p => 'node_modules/' + p + '/**/*.json');
],
options: { grunt.config(['watch'], {
interval: 1000, lessUpdated_Client: {
}, files: [
'public/less/*.less',
'!public/less/admin/**/*.less',
...lessUpdated_Client,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
lessUpdated_Admin: {
files: [
'public/less/admin/**/*.less',
...lessUpdated_Admin,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
clientUpdated: {
files: [
'public/src/**/*.js',
...clientUpdated,
'!node_modules/nodebb-*/node_modules/**',
'node_modules/benchpressjs/build/benchpress.js',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
serverUpdated: {
files: ['*.js', 'install/*.js', 'src/**/*.js', '!src/upgrades/**'],
options: {
interval: 1000,
},
},
templatesUpdated: {
files: [
'src/views/**/*.tpl',
...templatesUpdated,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
],
options: {
interval: 1000,
},
},
langUpdated: {
files: [
'public/language/en-GB/*.json',
'public/language/en-GB/**/*.json',
...langUpdated,
'!node_modules/nodebb-*/node_modules/**',
'!node_modules/nodebb-*/.git/**',
'!node_modules/nodebb-*/plugin.json',
'!node_modules/nodebb-*/package.json',
'!node_modules/nodebb-*/theme.json',
],
options: {
interval: 1000,
},
},
});
next();
}, },
}, ], done);
}); });
grunt.loadNpmTasks('grunt-contrib-watch'); grunt.task.run('init');
grunt.registerTask('default', ['watch']);
env.NODE_ENV = 'development'; env.NODE_ENV = 'development';
if (grunt.option('skip')) { if (grunt.option('skip')) {
@ -164,3 +218,25 @@ module.exports = function (grunt) {
grunt.event.on('watch', update); grunt.event.on('watch', update);
}; };
function addBaseThemes(plugins, callback) {
const themeId = plugins.find(p => p.startsWith('nodebb-theme-'));
if (!themeId) {
return setImmediate(callback, null, plugins);
}
function getBaseRecursive(themeId) {
try {
const baseTheme = require(themeId + '/theme').baseTheme;
if (baseTheme) {
plugins.push(baseTheme);
getBaseRecursive(baseTheme);
}
} catch (err) {
console.log(err);
}
}
getBaseRecursive(themeId);
callback(null, plugins);
}

Loading…
Cancel
Save