Skip to content

Commit 37d7ef1

Browse files
committed
🔖 Publish v0.3.3
2 parents 7ebbf75 + 630579d commit 37d7ef1

File tree

12 files changed

+4500
-2907
lines changed

12 files changed

+4500
-2907
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ before_install:
2525
- nvm --version
2626
- node --version
2727
before_script:
28-
- 'if [ "$WEBPACK_VERSION" ]; then yarn add webpack@^$WEBPACK_VERSION; fi'
28+
- 'if [ "$WEBPACK_VERSION" ]; then npm i webpack@^$WEBPACK_VERSION; fi'
2929
script:
30-
- yarn run travis:$JOB_PART
30+
- npm run travis:$JOB_PART
3131
after_success:
3232
- bash <(curl -s https://codecov.io/bash)

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,27 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
<a name="0.28.9"></a>
6+
## [0.28.9](https://github.com/webpack-contrib/css-loader/compare/v0.28.8...v0.28.9) (2018-01-17)
7+
8+
9+
### Bug Fixes
10+
11+
* ignore invalid URLs (`url()`) ([#663](https://github.com/webpack-contrib/css-loader/issues/663)) ([d1d8221](https://github.com/webpack-contrib/css-loader/commit/d1d8221))
12+
13+
14+
15+
<a name="0.28.8"></a>
16+
## [0.28.8](https://github.com/webpack-contrib/css-loader/compare/v0.28.7...v0.28.8) (2018-01-05)
17+
18+
19+
### Bug Fixes
20+
21+
* **loader:** correctly check if source map is `undefined` ([#641](https://github.com/webpack-contrib/css-loader/issues/641)) ([0dccfa9](https://github.com/webpack-contrib/css-loader/commit/0dccfa9))
22+
* proper URL escaping and wrapping (`url()`) ([#627](https://github.com/webpack-contrib/css-loader/issues/627)) ([8897d44](https://github.com/webpack-contrib/css-loader/commit/8897d44))
23+
24+
25+
526
<a name="0.28.7"></a>
627
## [0.28.7](https://github.com/webpack/css-loader/compare/v0.28.6...v0.28.7) (2017-08-30)
728

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ The query parameter `importLoaders` allows to configure how many loaders before
431431
{
432432
loader: 'css-loader',
433433
options: {
434-
importLoaders: 1 // 0 => no loaders (default); 1 => postcss-loader; 2 => postcss-loader, sass-loader
434+
importLoaders: 2 // 0 => no loaders (default); 1 => postcss-loader; 2 => postcss-loader, sass-loader
435435
}
436436
},
437437
'postcss-loader',

lib/loader.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,13 @@ module.exports = function(content, map) {
8383
}
8484

8585
cssAsString = cssAsString.replace(result.importItemRegExpG, importItemMatcher.bind(this));
86-
if(query.url !== false) {
86+
87+
// helper for ensuring valid CSS strings from requires
88+
var urlEscapeHelper = "";
89+
90+
if(query.url !== false && result.urlItems.length > 0) {
91+
urlEscapeHelper = "var escape = require(" + loaderUtils.stringifyRequest(this, require.resolve("./url/escape.js")) + ");\n";
92+
8793
cssAsString = cssAsString.replace(result.urlItemRegExpG, function(item) {
8894
var match = result.urlItemRegExp.exec(item);
8995
var idx = +match[1];
@@ -95,22 +101,21 @@ module.exports = function(content, map) {
95101
if(idx > 0) { // idx === 0 is catched by isUrlRequest
96102
// in cases like url('webfont.eot?#iefix')
97103
urlRequest = url.substr(0, idx);
98-
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"" +
104+
return "\" + escape(require(" + loaderUtils.stringifyRequest(this, urlRequest) + ")) + \"" +
99105
url.substr(idx);
100106
}
101107
urlRequest = url;
102-
return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"";
108+
return "\" + escape(require(" + loaderUtils.stringifyRequest(this, urlRequest) + ")) + \"";
103109
}.bind(this));
104110
}
105-
106-
111+
107112
var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
108113
if (exportJs) {
109114
exportJs = "exports.locals = " + exportJs + ";";
110115
}
111116

112117
var moduleJs;
113-
if(query.sourceMap && result.map) {
118+
if(sourceMap && result.map) {
114119
// add a SourceMap
115120
map = result.map;
116121
if(map.sources) {
@@ -127,9 +132,10 @@ module.exports = function(content, map) {
127132
}
128133

129134
// embed runtime
130-
callback(null, "exports = module.exports = require(" +
135+
callback(null, urlEscapeHelper +
136+
"exports = module.exports = require(" +
131137
loaderUtils.stringifyRequest(this, require.resolve("./css-base.js")) +
132-
")(" + query.sourceMap + ");\n" +
138+
")(" + sourceMap + ");\n" +
133139
"// imports\n" +
134140
importJs + "\n\n" +
135141
"// module\n" +

lib/processCss.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,8 @@ var parserPlugin = postcss.plugin("css-loader-parser", function(options) {
104104
break;
105105
case "url":
106106
if (options.url && item.url.replace(/\s/g, '').length && !/^#/.test(item.url) && (isAlias(item.url) || loaderUtils.isUrlRequest(item.url, options.root))) {
107-
// Don't remove quotes around url when contain space
108-
if (item.url.indexOf(" ") === -1) {
109-
item.stringType = "";
110-
}
107+
// Strip quotes, they will be re-added if the module needs them
108+
item.stringType = "";
111109
delete item.innerSpacingBefore;
112110
delete item.innerSpacingAfter;
113111
var url = item.url;

lib/url/escape.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module.exports = function escape(url) {
2+
if (typeof url !== 'string') {
3+
return url
4+
}
5+
// If url is already wrapped in quotes, remove them
6+
if (/^['"].*['"]$/.test(url)) {
7+
url = url.slice(1, -1);
8+
}
9+
// Should url be wrapped?
10+
// See https://drafts.csswg.org/css-values-3/#urls
11+
if (/["'() \t\n]/.test(url)) {
12+
return '"' + url.replace(/"/g, '\\"').replace(/\n/g, '\\n') + '"'
13+
}
14+
15+
return url
16+
}

0 commit comments

Comments
 (0)