Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit 8921120

Browse files
author
vakrilov
committed
fix: handle imports like @import url("./xxx.css")
1 parent 6b0c9ae commit 8921120

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

Diff for: css2json-loader.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const parse = require("tns-core-modules/css").parse;
2+
const urlPattern = /('|")(.*?)\1/;
23

34
module.exports = function (content, map) {
45
const ast = parse(content);
@@ -7,14 +8,13 @@ module.exports = function (content, map) {
78
getImportsFrom(ast)
89
.map(mapURI)
910
.forEach(({ uri, requireURI }) => {
10-
dependencies.push(`global.registerModule(${uri}, () => require(${requireURI}));`);
11+
dependencies.push(`global.registerModule("${uri}", () => require("${requireURI}"));`);
1112

12-
// call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
13+
// Call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
1314
if (uri !== requireURI) {
14-
dependencies.push(`global.registerModule(${requireURI}, () => require(${requireURI}));`);
15+
dependencies.push(`global.registerModule("${requireURI}", () => require("${requireURI}"));`);
1516
}
1617
});
17-
1818
const str = JSON.stringify(ast, (k, v) => k === "position" ? undefined : v);
1919
this.callback(null, `${dependencies.join("\n")}module.exports = ${str};`, map);
2020
}
@@ -25,12 +25,21 @@ function getImportsFrom(ast) {
2525
}
2626
return ast.stylesheet.rules
2727
.filter(rule => rule.type === "import")
28-
.map(importRule => importRule.import.replace(/[\'\"]/gm, ""));
28+
.map(urlFromImportRule);
2929
}
3030

31+
/**
32+
* Extracts the url from import rule (ex. `url("./platform.css")`)
33+
*/
34+
function urlFromImportRule(importRule) {
35+
const urlValue = importRule.import;
36+
const urlMatch = urlValue && urlValue.match(urlPattern);
37+
return urlMatch && urlMatch[2];
38+
};
39+
3140
function mapURI(uri) {
3241
return {
33-
uri: JSON.stringify(uri),
34-
requireURI: JSON.stringify(uri[0] === "~" && uri[1] !== "/" ? uri.substr(1) : uri)
42+
uri: uri,
43+
requireURI: uri[0] === "~" && uri[1] !== "/" ? uri.substr(1) : uri
3544
};
3645
}

Diff for: templates/webpack.angular.js

-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ module.exports = env => {
228228

229229
{ test: /\.html$|\.xml$/, use: "raw-loader" },
230230

231-
// tns-core-modules reads the app.css and its imports using css-loader
232231
{
233232
test: /[\/|\\]app\.css$/,
234233
use: [

0 commit comments

Comments
 (0)