From 00d892b95c8c0401b8a61f1b1709dfc4a68cfa26 Mon Sep 17 00:00:00 2001 From: Matthias Osswald Date: Mon, 14 Mar 2016 16:50:37 +0100 Subject: [PATCH] Set default of parser option "relativeUrls" to "true" This is a breaking change! In order to get the old behavior back, please set the "parser.relativeUrls" option to "false". As ui5 themes usually import other themes (e.g. base) to inherit variables, mixins and rules it is required to set the "relativeUrls" option to "true" in order to generate valid URLs (e.g. images/fonts). The default in LESS 1.6.3 is "false". --- README.md | 3 +- lib/index.js | 5 +++ .../expected/imports/main-no-relativeUrls.css | 11 ++++++ test/expected/imports/main.css | 6 +++ test/fixtures/imports/dir1/foo.less | 4 ++ test/fixtures/imports/dir2/bar.less | 4 ++ test/test.js | 39 +++++++++++++++++++ 7 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 test/expected/imports/main-no-relativeUrls.css diff --git a/README.md b/README.md index 55344d76..84bee605 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,8 @@ lib2 Type: `object` -Options for the [less](http://lesscss.org) parser (`less.Parser`). +Options for the [less](http://lesscss.org) parser (`less.Parser`). +**Note:** Default of `relativeUrls` option is changed from `false` to `true`. ##### compiler diff --git a/lib/index.js b/lib/index.js index 4fa538c3..745c2df4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -46,6 +46,11 @@ module.exports.build = function(input, options, callback) { library: {} }, options); + // Set default of "relativeUrls" parser option to "true" (less default is "false") + if (!options.parser.hasOwnProperty("relativeUrls")) { + options.parser.relativeUrls = true; + } + var result = { variables: {}, css: '', diff --git a/test/expected/imports/main-no-relativeUrls.css b/test/expected/imports/main-no-relativeUrls.css new file mode 100644 index 00000000..63549419 --- /dev/null +++ b/test/expected/imports/main-no-relativeUrls.css @@ -0,0 +1,11 @@ +@import "dir3/external.css"; +/* dir3/inline.css */ + +/* dir1/foo.less */ +.foo { + background: url("foo.png"); +} +/* dir2/bar.less */ +.bar { + background: url("bar.png"); +} \ No newline at end of file diff --git a/test/expected/imports/main.css b/test/expected/imports/main.css index eaafff09..bd5e8440 100644 --- a/test/expected/imports/main.css +++ b/test/expected/imports/main.css @@ -2,4 +2,10 @@ /* dir3/inline.css */ /* dir1/foo.less */ +.foo { + background: url("dir1/foo.png"); +} /* dir2/bar.less */ +.bar { + background: url("dir2/bar.png"); +} \ No newline at end of file diff --git a/test/fixtures/imports/dir1/foo.less b/test/fixtures/imports/dir1/foo.less index 8b1ba780..2ed39a8a 100644 --- a/test/fixtures/imports/dir1/foo.less +++ b/test/fixtures/imports/dir1/foo.less @@ -1 +1,5 @@ /* dir1/foo.less */ + +.foo { + background: url("foo.png"); +} diff --git a/test/fixtures/imports/dir2/bar.less b/test/fixtures/imports/dir2/bar.less index b8fd95f7..d4ef315d 100644 --- a/test/fixtures/imports/dir2/bar.less +++ b/test/fixtures/imports/dir2/bar.less @@ -1 +1,5 @@ /* dir2/bar.less */ + +.bar { + background: url("bar.png"); +} diff --git a/test/test.js b/test/test.js index 842b0a2e..ff282dd1 100644 --- a/test/test.js +++ b/test/test.js @@ -250,6 +250,45 @@ describe('imports', function() { }); + it('should use "relativeUrls" parser option by default', function(done) { + + lessOpenUI5.build(readFile('test/fixtures/imports/main.less'), { + parser: { + filename: 'main.less', + paths: [ 'test/fixtures/imports' ] + } + }, function(err, result) { + + assert.ifError(err); + + assert.equal(result.css, readFile('test/expected/imports/main.css'), 'css should be correctly generated.'); + + done(); + + }); + + }); + + it('should not rewrite urls when "relativeUrls" parser option is set to "false"', function(done) { + + lessOpenUI5.build(readFile('test/fixtures/imports/main.less'), { + parser: { + filename: 'main.less', + paths: [ 'test/fixtures/imports' ], + relativeUrls: false + } + }, function(err, result) { + + assert.ifError(err); + + assert.equal(result.css, readFile('test/expected/imports/main-no-relativeUrls.css'), 'css should be correctly generated.'); + + done(); + + }); + + }); + }); describe('inline theming parameters', function() {