From 7d60958e6b5250defe824e1123a48fd6c469446a Mon Sep 17 00:00:00 2001 From: DimitarTachev Date: Fri, 8 Nov 2019 14:46:21 +0200 Subject: [PATCH] fix: remove the tns-core-modules dependency in order to allow @nativescrip/core migration The parse method content is the same: Old: https://github.com/NativeScript/NativeScript/blob/fc2a233e9598def50969247c1516c32260b7e283/nativescript-core/css/lib/parse/index.js New: https://github.com/reworkcss/css/blob/v2.2.1/lib/parse/index.js --- css2json-loader.ts | 12 ++++-------- package.json | 2 ++ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/css2json-loader.ts b/css2json-loader.ts index 056a51b0..545e349c 100644 --- a/css2json-loader.ts +++ b/css2json-loader.ts @@ -1,11 +1,7 @@ -import { parse, Rule, SyntaxTree } from "tns-core-modules/css"; +import { parse, Import, Stylesheet } from "css"; import { loader } from "webpack"; import { getOptions } from "loader-utils"; -interface ImportRule extends Rule { - import: string; -} - const betweenQuotesPattern = /('|")(.*?)\1/; const unpackUrlPattern = /url\(([^\)]+)\)/; const inlineLoader = "!nativescript-dev-webpack/css2json-loader?useForImports!" @@ -33,18 +29,18 @@ const loader: loader.Loader = function (content: string, map) { this.callback(null, `${dependencies.join("\n")}module.exports = ${str};`, map); } -function getImportRules(ast: SyntaxTree): ImportRule[] { +function getImportRules(ast: Stylesheet): Import[] { if (!ast || (ast).type !== "stylesheet" || !ast.stylesheet) { return []; } - return ast.stylesheet.rules + return ast.stylesheet.rules .filter(rule => rule.type === "import" && (rule).import) } /** * Extracts the url from import rule (ex. `url("./platform.css")`) */ -function extractUrlFromRule(importRule: ImportRule): string { +function extractUrlFromRule(importRule: Import): string { const urlValue = importRule.import; const unpackedUrlMatch = urlValue.match(unpackUrlPattern); diff --git a/package.json b/package.json index ec438336..ad95ac11 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@angular-devkit/core": "8.2.0", "clean-webpack-plugin": "~1.0.0", "copy-webpack-plugin": "~4.6.0", + "css": "2.2.1", "css-loader": "~2.1.1", "escape-string-regexp": "1.0.5", "fork-ts-checker-webpack-plugin": "2.0.0", @@ -82,6 +83,7 @@ "@angular/compiler-cli": "8.2.0", "@istanbuljs/nyc-config-typescript": "^0.1.3", "@ngtools/webpack": "8.2.0", + "@types/css": "0.0.31", "@types/jasmine": "^3.3.7", "@types/loader-utils": "^1.1.3", "@types/node": "^10.12.12",