Skip to content
This repository was archived by the owner on Aug 7, 2019. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions lib/commands/compile.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,9 @@ exports.compile = function (opt, callback) {
}

var configfile = path.resolve(opt.pkgdir, 'require.config');
var requireCfg = require(configfile);

var packages = require(configfile).packages;
var packages = requireCfg.packages;
var pkgnames = packages.map(function (p) {
return p.name;
});
Expand Down Expand Up @@ -216,7 +217,7 @@ exports.compile = function (opt, callback) {
optimize: 'uglify',
include: includes,
out: opt.output,
paths: {requireLib: impl}
paths: _.extend({requireLib: impl}, requireCfg.paths || {})
};
if (opt.verbose) {
config.logLevel = 0;
Expand Down
78 changes: 43 additions & 35 deletions lib/project.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ exports.updateRequireConfig = function (package_dir, baseurl, /*opt*/rcfg, callb

var packages = [];
var shims = {};
var rconfig = {};

var basedir = baseurl ? path.relative(baseurl, package_dir): package_dir;
var dir = basedir.split(path.sep).map(encodeURIComponent).join('/');
Expand Down Expand Up @@ -216,46 +217,53 @@ exports.updateRequireConfig = function (package_dir, baseurl, /*opt*/rcfg, callb
return callback(err);
}

var data = {
exports.readPackageJSON( path.resolve( '.', 'package.json' ), function ( err, packageConfig, p ) {
if ( packageConfig.jam && packageConfig.jam.rconfig ) {
rconfig = packageConfig.jam.rconfig;
}

var data = _.extend( rconfig, {
// TODO: useful option for cache-busting
//urlArgs: '_jam_build=' + (new Date().getTime()),
packages: packages,
version: version,
shim: shims
}
packages : packages,
version : version,
shim : shims
} );

// now bring in other require.config.js options to make available
// earlier versions had variable substitution that breaks on r.js compilation
// now there is duplication - however, the original jam has been left untouched.
var cfg = _.clone(rcfg);
cfg.packages = _.union(rcfg.packages || [], packages);
cfg.shim = _.extend({}, rcfg.shim || {}, shims);
// now bring in other require.config.js options to make available
// earlier versions had variable substitution that breaks on r.js compilation
// now there is duplication - however, the original jam has been left untouched.
var cfg = _.clone(rcfg);
cfg = _.extend( cfg, rconfig || {} );
cfg.packages = _.union(rcfg.packages || [], packages);
cfg.shim = _.extend({}, rcfg.shim || {}, shims);
var configStr = JSON.stringify(cfg, null, 4);

var src = 'var jam = ' + JSON.stringify(data, null, 4) + ';\n' +
'\n' +
'if (typeof require !== "undefined" && require.config) {\n' +
' require.config(' + configStr + ');\n' +
'}\n' +
'else {\n' +
' var require = ' + configStr + ';\n' +
'}\n' +
'\n' +
'if (typeof exports !== "undefined" && ' +
'typeof module !== "undefined") {\n' +
' module.exports = jam;\n' +
'}';

var filename = path.resolve(package_dir, 'require.config.js');
mkdirp(package_dir, function (err) {
if (err) {
return callback(err);
}
logger.info('updating', path.relative(process.cwd(), filename));
async.parallel([
async.apply(fs.writeFile, filename, src),
async.apply(exports.makeRequireJS, package_dir, src)
], callback);
var src = 'var jam = ' + JSON.stringify(data, null, 4) + ';\n' +
'\n' +
'if (typeof require !== "undefined" && require.config) {\n' +
' require.config(' + configStr + ');\n' +
'}\n' +
'else {\n' +
' var require = ' + configStr + ';\n' +
'}\n' +
'\n' +
'if (typeof exports !== "undefined" && ' +
'typeof module !== "undefined") {\n' +
' module.exports = jam;\n' +
'}';

var filename = path.resolve(package_dir, 'require.config.js');
mkdirp(package_dir, function (err) {
if (err) {
return callback(err);
}
logger.info('updating', path.relative(process.cwd(), filename));
async.parallel([
async.apply(fs.writeFile, filename, src),
async.apply(exports.makeRequireJS, package_dir, src)
], callback);
});
});
});
});
Expand Down