Skip to content
This repository has been archived by the owner on Aug 15, 2018. It is now read-only.

Commit

Permalink
add support for building package in dependencies, Fix #883
Browse files Browse the repository at this point in the history
  • Loading branch information
sorrycc committed Jul 22, 2014
1 parent 2f80c59 commit 8432eb8
Show file tree
Hide file tree
Showing 13 changed files with 59 additions and 0 deletions.
2 changes: 2 additions & 0 deletions bin/spm-build
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ commander
.option('--ignore [ignore]', 'determine which id will not be transported')
.option('--skip [skip]', 'determine which id will not be parsed when analyse')
.option('--idleading [idleading]', 'prefix of module name, default: {{name}}/{{version}}')
.option('--with-deps', 'build package in dependencies')
.option('--zip', 'archive by zip')
.parse(process.argv);

Expand Down Expand Up @@ -46,6 +47,7 @@ var args = {
idleading: commander.idleading,
zip: commander.zip,
force: commander.force,
withDeps: commander.withDeps,
install: true
};

Expand Down
11 changes: 11 additions & 0 deletions lib/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,17 @@ function build(args, cb) {
// check duplicate pkgs
checkDuplicate(files, pkg);

// build package in dependencies
if (args.withDeps) {
var depPkgs = pkg.getPackages();
for (var id in depPkgs) {
files = files.concat(getFiles(depPkgs[id]).map(function(f) {
return 'sea-modules/'+id.replace('@','/')+'/' + f;
}));
}
log.info('withDeps', 'files: ' + files);
}

// define task
defineCleanTask(args);
defineBuildTask(files, args);
Expand Down
13 changes: 13 additions & 0 deletions tests/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,19 @@ describe('build', function() {
});
});

it('js package with deps', function(done) {
var opt = {
cwd: join(base, 'build-js'),
dest: dest,
withDeps: true
};
build(opt, function(err) {
should.not.exist(err);
assets('build-js-with-deps', dest);
done();
});
});

function assets(prefix, dest) {
var expect = join(base, 'expect', prefix);
glob.sync('**/*', {cwd: expect})
Expand Down
8 changes: 8 additions & 0 deletions tests/build/expect/build-js-with-deps/a/1.0.0/index-debug.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
define("a/1.0.0/index-debug", ["b/1.1.0/src/b-debug", "c/1.1.1/index-debug", "d/0.1.0/index-debug", "d/0.1.1/index-debug"], function(require, exports, module) {
require("a/1.0.0/relative-debug");
require("d/0.1.1/index-debug");
});
define("a/1.0.0/relative-debug", ["b/1.1.0/src/b-debug", "c/1.1.1/index-debug", "d/0.1.0/index-debug"], function(require, exports, module) {
console.log('relative');
require("b/1.1.0/src/b-debug");
});
1 change: 1 addition & 0 deletions tests/build/expect/build-js-with-deps/a/1.0.0/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions tests/build/expect/build-js-with-deps/b/1.1.0/src/b-debug.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
define("b/1.1.0/src/b-debug", ["c/1.1.1/index-debug", "d/0.1.0/index-debug"], function(require, exports, module) {
require("c/1.1.1/index-debug");
require("b/1.1.0/src/b-debug.tpl");
});
define("b/1.1.0/src/b-debug.tpl", [], function(require, exports, module) {
module.exports = '<div></div>';
});
1 change: 1 addition & 0 deletions tests/build/expect/build-js-with-deps/b/1.1.0/src/b.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions tests/build/expect/build-js-with-deps/c/1.1.1/index-debug.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
define("c/1.1.1/index-debug", ["d/0.1.0/index-debug"], function(require, exports, module) {
require("d/0.1.0/index-debug");
});
1 change: 1 addition & 0 deletions tests/build/expect/build-js-with-deps/c/1.1.1/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
define("c/1.1.1/index",["d/0.1.0/index"],function(d){d("d/0.1.0/index")});
5 changes: 5 additions & 0 deletions tests/build/expect/build-js-with-deps/d/0.1.0/index-debug.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
define("d/0.1.0/index-debug", [], function(require, exports, module) {
exports.d = function() {
console.log('0.1.0');
};
});
1 change: 1 addition & 0 deletions tests/build/expect/build-js-with-deps/d/0.1.0/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
define("d/0.1.0/index",[],function(n,o){o.d=function(){console.log("0.1.0")}});
5 changes: 5 additions & 0 deletions tests/build/expect/build-js-with-deps/d/0.1.1/index-debug.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
define("d/0.1.1/index-debug", [], function(require, exports, module) {
exports.d = function() {
console.log('0.1.1');
};
});
1 change: 1 addition & 0 deletions tests/build/expect/build-js-with-deps/d/0.1.1/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
define("d/0.1.1/index",[],function(n,o){o.d=function(){console.log("0.1.1")}});

0 comments on commit 8432eb8

Please sign in to comment.