diff --git a/CHANGELOG.md b/CHANGELOG.md
index d83646e9..cfdee7ff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,13 @@
+
+## [0.19.2](https://github.com/NativeScript/nativescript-dev-webpack/compare/0.19.1...0.19.2) (2019-02-01)
+
+
+### Bug Fixes
+
+* optimize platform specific files resolver ([#782](https://github.com/NativeScript/nativescript-dev-webpack/issues/782)) ([fb52c53](https://github.com/NativeScript/nativescript-dev-webpack/commit/fb52c53))
+
+
+
## [0.19.1](https://github.com/NativeScript/nativescript-dev-webpack/compare/0.19.0...0.19.1) (2019-01-28)
diff --git a/host/resolver.ts b/host/resolver.ts
index 13e7cc04..30d8c7a0 100644
--- a/host/resolver.ts
+++ b/host/resolver.ts
@@ -1,23 +1,42 @@
-import {
- parse,
- join,
-} from "path";
+import { parse, join } from "path";
import { statSync } from "fs";
-export function getResolver(platforms: string[]) {
- return function(path: string) {
+export function getResolver(platforms: string[], explicitResolve: string[] = []) {
+ const platformSpecificExt = [".ts", ".js", ".scss", ".less", ".css", ".html", ".xml", ".vue", ".json"];
+ const nsPackageFilters = [
+ 'nativescript',
+ 'tns',
+ 'ns'
+ ];
+
+ return function (path: string) {
+ const nmIndex = path.lastIndexOf('node_modules');
+
+ if (nmIndex !== -1) {
+ const subPath = path.substr(nmIndex + 'node_modules'.length).replace(/\\/g, '/');
+ const shouldResolve = explicitResolve.length && explicitResolve.some(packageName => subPath.indexOf(packageName) !== -1);
+ const pathParts = subPath.split(/[/\-_]/);
+
+ if (!shouldResolve && pathParts.every(p => nsPackageFilters.every(f => f !== p))) {
+ return path;
+ }
+ }
+
const { dir, name, ext } = parse(path);
+ if (platformSpecificExt.indexOf(ext) === -1) {
+ return path;
+ }
+
for (const platform of platforms) {
const platformFileName = `${name}.${platform}${ext}`;
const platformPath = toSystemPath(join(dir, platformFileName));
try {
- const stat = statSync(platformPath);
- if (stat && stat.isFile()) {
+ if (statSync(platformPath)) {
return platformPath;
}
- } catch(_e) {
+ } catch (_e) {
// continue checking the other platforms
}
}
@@ -34,6 +53,6 @@ function toSystemPath(path: string) {
const drive = path.match(/^\\(\w)\\(.*)$/);
return drive ?
- `${drive[1]}:\\${drive[2]}`:
+ `${drive[1]}:\\${drive[2]}` :
path;
}
diff --git a/package.json b/package.json
index 5b311ee5..7496b3cc 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "nativescript-dev-webpack",
- "version": "0.19.1",
+ "version": "0.19.2",
"main": "index",
"description": "",
"homepage": "http://www.telerik.com",