Skip to content

Instantly share code, notes, and snippets.

@dannymidnight
Last active August 29, 2015 14:06
Show Gist options
  • Save dannymidnight/29165b9d1219db22334f to your computer and use it in GitHub Desktop.
Save dannymidnight/29165b9d1219db22334f to your computer and use it in GitHub Desktop.
RequireJS watcher in Gulp
var gulp = require("gulp"),
rjs = require("requirejs"),
rjsHelper = require('./assets/grunt/requirejs'),
glob = require('glob');
var paths = {
scripts: 'assets/js'
};
var getRequireJSTargets = function() {
var targets = [];
glob('page/*.js', { cwd: 'assets/js', sync: true }, function(er, files) {
targets = files.map(function(file) {
return file.replace('.js', '');
});
});
return targets;
};
var requirejs = function(target) {
rjs.optimize({
optimize: "none",
baseUrl: "./assets/components",
mainConfigFile: "./assets/require.conf.js",
name: 'almond/almond',
generateSourceMaps: true,
out: "public/assets/js/" + target + ".js",
include: "../js/" + target + ".js"
});
gutil.log(
'Compiled',
gutil.colors.cyan("public/assets/js/" + target + ".js")
);
};
var requireJSCompile = function(file) {
var name = file.path
.replace(path.resolve(__dirname, paths.scripts) + "/", "")
.replace(".js", "");
var pages = getRequireJSTargets();
var targets = rjsHelper.findTargetsWithDependency(name, pages, {
path: paths.scripts,
requireConfig: 'assets/require.conf.js',
format: 'cjs'
});
if (!targets.length) {
targets = [name];
}
targets.forEach(function(target) {
requirejs(target);
});
};
gulp.task('watch', function() {
// Watch JS files for changes
gulp.watch(paths.scripts + '/**/*.js', requireJSCompile);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment