mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
fix: svelte and css2json-loader
This commit is contained in:
@@ -16,20 +16,11 @@ export default function loader(content: string, map: any) {
|
||||
// todo: revise if this is necessary
|
||||
// todo: perhaps use postCSS and just build imports into a single file?
|
||||
let dependencies = [];
|
||||
getImportRules(ast)
|
||||
getAndRemoveImportRules(ast)
|
||||
.map(extractUrlFromRule)
|
||||
.map(createRequireUri)
|
||||
.forEach(({ uri, requireURI }) => {
|
||||
dependencies.push(
|
||||
`global.registerModule("${uri}", () => require("${requirePrefix}${requireURI}"));`
|
||||
);
|
||||
|
||||
// Call registerModule with requireURI to handle cases like @import "~@nativescript/theme/css/blue.css";
|
||||
if (uri !== requireURI) {
|
||||
dependencies.push(
|
||||
`global.registerModule("${requireURI}", () => require("${requirePrefix}${requireURI}"));`
|
||||
);
|
||||
}
|
||||
dependencies.push(`require("${requirePrefix}${requireURI}")`);
|
||||
});
|
||||
|
||||
const str = JSON.stringify(ast, (k, v) => (k === 'position' ? undefined : v));
|
||||
@@ -60,6 +51,15 @@ function getImportRules(ast: Stylesheet): Import[] {
|
||||
);
|
||||
}
|
||||
|
||||
function getAndRemoveImportRules(ast: Stylesheet): Import[] {
|
||||
const imports = getImportRules(ast);
|
||||
ast.stylesheet.rules = ast.stylesheet.rules.filter(
|
||||
(rule) => rule.type !== 'import'
|
||||
);
|
||||
|
||||
return imports;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the url from import rule (ex. `url("./platform.css")`)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user