diff --git a/lib/plugin/include.js b/lib/plugin/include.js index 03b5677..dd08984 100644 --- a/lib/plugin/include.js +++ b/lib/plugin/include.js @@ -5,6 +5,7 @@ var File = require('vinyl'); var join = require('path').join; var extend = require('extend'); var through = require('through2'); +var winPath = require('../util').winPath; var common = require('../common'); var getDepsPackage = common.getDepsPackage; var getExtra = common.getExtra; @@ -17,7 +18,7 @@ module.exports = function(opt) { return through.obj(function(file, enc, cb) { var self = this; var base = file.base; - var filepath = file.relative; + var filepath = winPath(file.relative); var endFile = file.clone(); endFile.dependentPath = file.path; diff --git a/lib/plugin/js.js b/lib/plugin/js.js index 7dd1d8d..e9d9fa9 100644 --- a/lib/plugin/js.js +++ b/lib/plugin/js.js @@ -8,6 +8,7 @@ var template = util.template; var isRelative = util.isRelative; var hideExt = util.hideExt; var resolvePath = util.resolvePath; +var winPath = util.winPath; var common = require('../common'); var createStream = common.createStream; var transportDeps = common.transportDeps; @@ -59,7 +60,7 @@ function replace(code, fInfo, options) { function replaceId(id, pkg, options, base) { if (isRelative(id)) { id = hideExt(id); - var file = resolvePath(id, base); + var file = winPath(resolvePath(id, base)); file = findFile(file, pkg.files); return transportId(file, pkg, options); } diff --git a/test/expected/transport-include-all-ignore.js b/test/expected/transport-include-all-ignore.js index 9d36759..ff0ab30 100644 --- a/test/expected/transport-include-all-ignore.js +++ b/test/expected/transport-include-all-ignore.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", ["b","c"], function(require, exports, module){ +define("a/1.0.0/src/index", ["b","c"], function(require, exports, module){ require('b'); require("a/1.0.0/a"); diff --git a/test/expected/transport-include-all-ignore2.js b/test/expected/transport-include-all-ignore2.js index 91e28b6..9250b8a 100644 --- a/test/expected/transport-include-all-ignore2.js +++ b/test/expected/transport-include-all-ignore2.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", ["c"], function(require, exports, module){ +define("a/1.0.0/src/index", ["c"], function(require, exports, module){ require("b/1.0.0/index"); require("a/1.0.0/a"); diff --git a/test/expected/transport-include-all.js b/test/expected/transport-include-all.js index 18cda4e..8beee49 100644 --- a/test/expected/transport-include-all.js +++ b/test/expected/transport-include-all.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", [], function(require, exports, module){ +define("a/1.0.0/src/index", [], function(require, exports, module){ require("b/1.0.0/index"); require("a/1.0.0/a"); diff --git a/test/expected/transport-include-relative-ignore.js b/test/expected/transport-include-relative-ignore.js index 9d36759..ff0ab30 100644 --- a/test/expected/transport-include-relative-ignore.js +++ b/test/expected/transport-include-relative-ignore.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", ["b","c"], function(require, exports, module){ +define("a/1.0.0/src/index", ["b","c"], function(require, exports, module){ require('b'); require("a/1.0.0/a"); diff --git a/test/expected/transport-include-relative.js b/test/expected/transport-include-relative.js index 344c9e3..30c61ad 100644 --- a/test/expected/transport-include-relative.js +++ b/test/expected/transport-include-relative.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", ["b/1.0.0/index","c/1.0.0/index"], function(require, exports, module){ +define("a/1.0.0/src/index", ["b/1.0.0/index","c/1.0.0/index"], function(require, exports, module){ require("b/1.0.0/index"); require("a/1.0.0/a"); diff --git a/test/expected/transport-include-self-ignore.js b/test/expected/transport-include-self-ignore.js index c572b7b..a37671e 100644 --- a/test/expected/transport-include-self-ignore.js +++ b/test/expected/transport-include-self-ignore.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", ["b","c","a/1.0.0/a"], function(require, exports, module){ +define("a/1.0.0/src/index", ["b","c","a/1.0.0/a"], function(require, exports, module){ require('b'); require("a/1.0.0/a"); diff --git a/test/expected/transport-include-self.js b/test/expected/transport-include-self.js index 4c6141d..bbcc0fc 100644 --- a/test/expected/transport-include-self.js +++ b/test/expected/transport-include-self.js @@ -1,4 +1,4 @@ -define("a/1.0.0/index", ["b/1.0.0/index","c/1.0.0/index","a/1.0.0/a"], function(require, exports, module){ +define("a/1.0.0/src/index", ["b/1.0.0/index","c/1.0.0/index","a/1.0.0/a"], function(require, exports, module){ require("b/1.0.0/index"); require("a/1.0.0/a"); diff --git a/test/expected/transport-other-ext-debug.js b/test/expected/transport-other-ext-debug.js new file mode 100644 index 0000000..b115841 --- /dev/null +++ b/test/expected/transport-other-ext-debug.js @@ -0,0 +1,28 @@ +define("a/1.0.0/index-debug", [], function(require, exports, module){ +require("a/1.0.0/a.runtime-debug"); +require("a/1.0.0/jquery.plugin-debug"); +require("a/1.0.0/a-debug.tpl"); +require("a/1.0.0/src/index-debug"); +require("a/1.0.0/src/one.two.three-debug"); + +}); +define("a/1.0.0/a.runtime-debug", [], function(require, exports, module){ +console.log('a.runtime.js'); + +}); +define("a/1.0.0/jquery.plugin-debug", [], function(require, exports, module){ +console.log('jquery.plugin.js'); + +}); +define("a/1.0.0/a-debug.tpl", [], function(require, exports, module){ +module.exports = '
'; + +}); +define("a/1.0.0/src/index-debug", [], function(require, exports, module){ +console.log('src/index.js'); + +}); +define("a/1.0.0/src/one.two.three-debug", [], function(require, exports, module){ +console.log('src/one.two.three.js'); + +}); diff --git a/test/expected/transport-other-ext.js b/test/expected/transport-other-ext.js new file mode 100644 index 0000000..ddf19fc --- /dev/null +++ b/test/expected/transport-other-ext.js @@ -0,0 +1,28 @@ +define("a/1.0.0/index", [], function(require, exports, module){ +require("a/1.0.0/a.runtime"); +require("a/1.0.0/jquery.plugin"); +require("a/1.0.0/a.tpl"); +require("a/1.0.0/src/index"); +require("a/1.0.0/src/one.two.three"); + +}); +define("a/1.0.0/a.runtime", [], function(require, exports, module){ +console.log('a.runtime.js'); + +}); +define("a/1.0.0/jquery.plugin", [], function(require, exports, module){ +console.log('jquery.plugin.js'); + +}); +define("a/1.0.0/a.tpl", [], function(require, exports, module){ +module.exports = '
'; + +}); +define("a/1.0.0/src/index", [], function(require, exports, module){ +console.log('src/index.js'); + +}); +define("a/1.0.0/src/one.two.three", [], function(require, exports, module){ +console.log('src/one.two.three.js'); + +}); diff --git a/test/fixtures/check-path/a.ext b/test/fixtures/check-path/a.ext deleted file mode 100644 index 0c2fcc6..0000000 --- a/test/fixtures/check-path/a.ext +++ /dev/null @@ -1 +0,0 @@ -console.log('other extension'); diff --git a/test/fixtures/check-path/index.js b/test/fixtures/check-path/index.js deleted file mode 100644 index 581cf95..0000000 --- a/test/fixtures/check-path/index.js +++ /dev/null @@ -1,2 +0,0 @@ -require('./jquery.plugin'); -require('./a.ext'); diff --git a/test/fixtures/js-require-js/index.js b/test/fixtures/js-require-js/index.js deleted file mode 100644 index 543e5c5..0000000 --- a/test/fixtures/js-require-js/index.js +++ /dev/null @@ -1,2 +0,0 @@ -require('b'); -require('./a'); diff --git a/test/fixtures/js-require-js/package.json b/test/fixtures/js-require-js/package.json index 057a0eb..8a372db 100644 --- a/test/fixtures/js-require-js/package.json +++ b/test/fixtures/js-require-js/package.json @@ -2,6 +2,7 @@ "name": "a", "version": "1.0.0", "spm": { + "main": "src/index.js", "dependencies": { "b": "1.0.0" } diff --git a/test/fixtures/js-require-js/src/index.js b/test/fixtures/js-require-js/src/index.js new file mode 100644 index 0000000..a13e4d8 --- /dev/null +++ b/test/fixtures/js-require-js/src/index.js @@ -0,0 +1,2 @@ +require('b'); +require('../a'); diff --git a/test/fixtures/require-other-ext/a.runtime.js b/test/fixtures/require-other-ext/a.runtime.js new file mode 100644 index 0000000..bee792b --- /dev/null +++ b/test/fixtures/require-other-ext/a.runtime.js @@ -0,0 +1 @@ +console.log('a.runtime.js'); diff --git a/test/fixtures/require-other-ext/a.tpl b/test/fixtures/require-other-ext/a.tpl new file mode 100644 index 0000000..7c89b54 --- /dev/null +++ b/test/fixtures/require-other-ext/a.tpl @@ -0,0 +1 @@ +
diff --git a/test/fixtures/require-other-ext/index.js b/test/fixtures/require-other-ext/index.js new file mode 100644 index 0000000..4ab2c5e --- /dev/null +++ b/test/fixtures/require-other-ext/index.js @@ -0,0 +1,5 @@ +require('./a.runtime.js'); +require('./jquery.plugin'); +require('./a.tpl'); +require('./src'); +require('./src/one.two.three'); diff --git a/test/fixtures/check-path/jquery.plugin.js b/test/fixtures/require-other-ext/jquery.plugin.js similarity index 100% rename from test/fixtures/check-path/jquery.plugin.js rename to test/fixtures/require-other-ext/jquery.plugin.js diff --git a/test/fixtures/check-path/package.json b/test/fixtures/require-other-ext/package.json similarity index 100% rename from test/fixtures/check-path/package.json rename to test/fixtures/require-other-ext/package.json diff --git a/test/fixtures/require-other-ext/src/index.js b/test/fixtures/require-other-ext/src/index.js new file mode 100644 index 0000000..d8e45e9 --- /dev/null +++ b/test/fixtures/require-other-ext/src/index.js @@ -0,0 +1 @@ +console.log('src/index.js'); diff --git a/test/fixtures/require-other-ext/src/one.two.three.js b/test/fixtures/require-other-ext/src/one.two.three.js new file mode 100644 index 0000000..f9f3c7c --- /dev/null +++ b/test/fixtures/require-other-ext/src/one.two.three.js @@ -0,0 +1 @@ +console.log('src/one.two.three.js'); diff --git a/test/transport.test.js b/test/transport.test.js index 1fab99b..d3a9dac 100644 --- a/test/transport.test.js +++ b/test/transport.test.js @@ -20,12 +20,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'all', ignore: ['b']})) .on('data', function(file) { assert(file, 'transport-all.js'); - }) - .on('end', done); + done(); + }); }); // https://github.com/popomore/gulp-transport/issues/5 @@ -39,12 +39,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'self'})) .on('data', function(file) { assert(file, 'transport-include-self.js'); - }) - .on('end', done); + done(); + }); }); it('self with ignore', function(done) { @@ -55,12 +55,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'self', ignore: ['b']})) .on('data', function(file) { assert(file, 'transport-include-self-ignore.js'); - }) - .on('end', done); + done(); + }); }); it('self with css', function(done) { @@ -71,12 +71,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'self'})) .on('data', function(file) { assert(file, 'transport-include-self-css.js'); - }) - .on('end', done); + done(); + }); }); it('relative', function(done) { @@ -87,12 +87,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'relative'})) .on('data', function(file) { assert(file, 'transport-include-relative.js'); - }) - .on('end', done); + done(); + }); }); @@ -104,12 +104,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'relative', ignore: ['b']})) .on('data', function(file) { assert(file, 'transport-include-relative-ignore.js'); - }) - .on('end', done); + done(); + }); }); it('relative with css', function(done) { @@ -120,12 +120,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'relative'})) .on('data', function(file) { assert(file, 'transport-include-relative-css.js'); - }) - .on('end', done); + done(); + }); }); it('relative with css ignore', function(done) { @@ -136,12 +136,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'relative', ignore: ['import-style']})) .on('data', function(file) { assert(file, 'transport-include-relative-css-ignore.js'); - }) - .on('end', done); + done(); + }); }); it('all', function(done) { @@ -152,12 +152,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'all'})) .on('data', function(file) { assert(file, 'transport-include-all.js'); - }) - .on('end', done); + done(); + }); }); it('all with ignore', function(done) { @@ -168,12 +168,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'all', ignore: ['b']})) .on('data', function(file) { assert(file, 'transport-include-all-ignore.js'); - }) - .on('end', done); + done(); + }); }); it('all with ignore2', function(done) { @@ -184,12 +184,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'all', ignore: ['c']})) .on('data', function(file) { assert(file, 'transport-include-all-ignore2.js'); - }) - .on('end', done); + done(); + }); }); it('all with css', function(done) { @@ -200,12 +200,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'all'})) .on('data', function(file) { assert(file, 'transport-include-all-css.js'); - }) - .on('end', done); + done(); + }); }); }); @@ -220,14 +220,14 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, rename: {suffix: '-debug'}})) .on('data', function(file) { util.winPath(file.originPath).should.include('type-transport/index.js'); util.winPath(file.path).should.include('type-transport/index-debug.js'); assert(file, 'transport-rename-debug.js'); - }) - .on('end', done); + done(); + }); }); it('rename with hash', function(done) { @@ -244,14 +244,14 @@ describe('Transport', function() { return file; } - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, rename: rename})) .on('data', function(file) { util.winPath(file.originPath).should.include('transport-hash/index.js'); util.winPath(file.path).should.include('transport-hash/index-8951f677.js'); assert(file, 'transport-rename-hash.js'); - }) - .on('end', done); + done(); + }); }); it('rename with css', function(done) { @@ -268,8 +268,8 @@ describe('Transport', function() { util.winPath(file.originPath).should.include('css-import/index.css'); util.winPath(file.path).should.include('css-import/index-debug.css'); assert(file, 'transport-rename-css.css'); - }) - .on('end', done); + done(); + }); }); }); @@ -280,7 +280,7 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'self'})) .once('error', function(e) { e.message.should.eql('handlebars-runtime not exist, but required .handlebars'); @@ -289,19 +289,37 @@ describe('Transport', function() { .on('end', done); }); - it('check path', function(done) { - var pkg = getPackage('check-path'); - var opt = { - cwd: join(base, 'check-path'), - cwdbase: true - }; + describe('other extension', function() { - gulp.src('index.js', opt) - .pipe(transport({pkg: pkg, include: 'self'})) - .on('data', function(file) { - assert(file, 'check-path.js'); - }) - .on('end', done); + it('relative', function(done) { + var pkg = getPackage('require-other-ext'); + var opt = { + cwd: join(base, 'require-other-ext'), + cwdbase: true + }; + + gulp.src(pkg.main, opt) + .pipe(transport({pkg: pkg})) + .on('data', function(file) { + assert(file, 'transport-other-ext.js'); + done(); + }); + }); + + it('debug', function(done) { + var pkg = getPackage('require-other-ext'); + var opt = { + cwd: join(base, 'require-other-ext'), + cwdbase: true + }; + + gulp.src(pkg.main, opt) + .pipe(transport({pkg: pkg, rename: {suffix: '-debug'}})) + .on('data', function(file) { + assert(file, 'transport-other-ext-debug.js'); + done(); + }); + }); }); it('require directory', function(done) { @@ -311,12 +329,12 @@ describe('Transport', function() { cwdbase: true }; - gulp.src('index.js', opt) + gulp.src(pkg.main, opt) .pipe(transport({pkg: pkg, include: 'self'})) .on('data', function(file) { assert(file, 'require-directory.js'); - }) - .on('end', done); + done(); + }); }); describe('exports', function() {