From 307b9558fbfe4a5e2a7d4e0f6529aae497e5e15c Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Fri, 4 Dec 2020 15:22:30 +0300 Subject: [PATCH] fix: resolving `.import` --- src/utils.js | 4 +- test/__snapshots__/loader.test.js.snap | 40 +++++++++++++++++++ test/loader.test.js | 32 +++++++++++++++ .../index-import-package/_index.import.scss | 3 ++ .../index-import-package/package.json | 11 +++++ .../import-index-import-from-package.sass | 1 + test/sass/import-index-import.sass | 1 + test/sass/index-import/_index.import.sass | 2 + .../import-index-import-from-package.scss | 1 + test/scss/import-index-import.scss | 1 + test/scss/index-import/_index.import.scss | 3 ++ 11 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 test/node_modules/index-import-package/_index.import.scss create mode 100644 test/node_modules/index-import-package/package.json create mode 100644 test/sass/import-index-import-from-package.sass create mode 100644 test/sass/import-index-import.sass create mode 100644 test/sass/index-import/_index.import.sass create mode 100644 test/scss/import-index-import-from-package.scss create mode 100644 test/scss/import-index-import.scss create mode 100644 test/scss/index-import/_index.import.scss diff --git a/src/utils.js b/src/utils.js index 556ffbe7..bd0409a9 100644 --- a/src/utils.js +++ b/src/utils.js @@ -365,7 +365,7 @@ function getWebpackResolver( extensions: [".sass", ".scss", ".css"], exportsFields: [], mainFields: [], - mainFiles: ["_index", "index"], + mainFiles: ["_index.import", "_index", "index.import", "index"], modules: [], restrictions: [/\.((sa|sc|c)ss)$/i], }) @@ -374,7 +374,7 @@ function getWebpackResolver( resolverFactory({ conditionNames: ["sass", "style"], mainFields: ["sass", "style", "main", "..."], - mainFiles: ["_index", "index", "..."], + mainFiles: ["_index.import", "_index", "index.import", "index", "..."], extensions: [".sass", ".scss", ".css"], restrictions: [/\.((sa|sc|c)ss)$/i], }) diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 9adb7096..b18d6394 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -1,5 +1,45 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`loader should import .import.sass files (dart-sass) (sass): css 1`] = ` +"a { + display: block; +}" +`; + +exports[`loader should import .import.sass files (dart-sass) (sass): errors 1`] = `Array []`; + +exports[`loader should import .import.sass files (dart-sass) (sass): warnings 1`] = `Array []`; + +exports[`loader should import .import.sass files from a package (dart-sass) (sass): css 1`] = ` +"a { + display: block; +}" +`; + +exports[`loader should import .import.sass files from a package (dart-sass) (sass): errors 1`] = `Array []`; + +exports[`loader should import .import.sass files from a package (dart-sass) (sass): warnings 1`] = `Array []`; + +exports[`loader should import .import.scss files (dart-sass) (scss): css 1`] = ` +"a { + display: block; +}" +`; + +exports[`loader should import .import.scss files (dart-sass) (scss): errors 1`] = `Array []`; + +exports[`loader should import .import.scss files (dart-sass) (scss): warnings 1`] = `Array []`; + +exports[`loader should import .import.scss files from a package (dart-sass) (scss): css 1`] = ` +"a { + display: block; +}" +`; + +exports[`loader should import .import.scss files from a package (dart-sass) (scss): errors 1`] = `Array []`; + +exports[`loader should import .import.scss files from a package (dart-sass) (scss): warnings 1`] = `Array []`; + exports[`loader should load files with underscore in the name (dart-sass) (sass): css 1`] = ` "a { color: red; diff --git a/test/loader.test.js b/test/loader.test.js index ebc3cd4f..76704472 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -1454,6 +1454,38 @@ describe("loader", () => { expect(getWarnings(stats)).toMatchSnapshot("warnings"); expect(getErrors(stats)).toMatchSnapshot("errors"); }); + + it(`should import .import.${syntax} files (${implementationName}) (${syntax})`, async () => { + const testId = getTestId("import-index-import", syntax); + const options = { + implementation: getImplementationByName(implementationName), + }; + const compiler = getCompiler(testId, { loader: { options } }); + const stats = await compile(compiler); + const codeFromBundle = getCodeFromBundle(stats, compiler); + const codeFromSass = getCodeFromSass(testId, options); + + expect(codeFromBundle.css).toBe(codeFromSass.css); + expect(codeFromBundle.css).toMatchSnapshot("css"); + expect(getWarnings(stats)).toMatchSnapshot("warnings"); + expect(getErrors(stats)).toMatchSnapshot("errors"); + }); + + it(`should import .import.${syntax} files from a package (${implementationName}) (${syntax})`, async () => { + const testId = getTestId("import-index-import-from-package", syntax); + const options = { + implementation: getImplementationByName(implementationName), + }; + const compiler = getCompiler(testId, { loader: { options } }); + const stats = await compile(compiler); + const codeFromBundle = getCodeFromBundle(stats, compiler); + const codeFromSass = getCodeFromSass(testId, options); + + expect(codeFromBundle.css).toBe(codeFromSass.css); + expect(codeFromBundle.css).toMatchSnapshot("css"); + expect(getWarnings(stats)).toMatchSnapshot("warnings"); + expect(getErrors(stats)).toMatchSnapshot("errors"); + }); } }); }); diff --git a/test/node_modules/index-import-package/_index.import.scss b/test/node_modules/index-import-package/_index.import.scss new file mode 100644 index 00000000..d1308905 --- /dev/null +++ b/test/node_modules/index-import-package/_index.import.scss @@ -0,0 +1,3 @@ +a { + display: block; +} diff --git a/test/node_modules/index-import-package/package.json b/test/node_modules/index-import-package/package.json new file mode 100644 index 00000000..96e57e0a --- /dev/null +++ b/test/node_modules/index-import-package/package.json @@ -0,0 +1,11 @@ +{ + "name": "index-import", + "version": "1.0.0", + "description": "test", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "MIT" +} \ No newline at end of file diff --git a/test/sass/import-index-import-from-package.sass b/test/sass/import-index-import-from-package.sass new file mode 100644 index 00000000..eabfda99 --- /dev/null +++ b/test/sass/import-index-import-from-package.sass @@ -0,0 +1 @@ +@import '~index-import-package' diff --git a/test/sass/import-index-import.sass b/test/sass/import-index-import.sass new file mode 100644 index 00000000..ceae2016 --- /dev/null +++ b/test/sass/import-index-import.sass @@ -0,0 +1 @@ +@import 'index-import' diff --git a/test/sass/index-import/_index.import.sass b/test/sass/index-import/_index.import.sass new file mode 100644 index 00000000..15c710df --- /dev/null +++ b/test/sass/index-import/_index.import.sass @@ -0,0 +1,2 @@ +a + display: block \ No newline at end of file diff --git a/test/scss/import-index-import-from-package.scss b/test/scss/import-index-import-from-package.scss new file mode 100644 index 00000000..32a5f5cf --- /dev/null +++ b/test/scss/import-index-import-from-package.scss @@ -0,0 +1 @@ +@import '~index-import-package'; diff --git a/test/scss/import-index-import.scss b/test/scss/import-index-import.scss new file mode 100644 index 00000000..57332724 --- /dev/null +++ b/test/scss/import-index-import.scss @@ -0,0 +1 @@ +@import 'index-import'; diff --git a/test/scss/index-import/_index.import.scss b/test/scss/index-import/_index.import.scss new file mode 100644 index 00000000..4ad5620f --- /dev/null +++ b/test/scss/index-import/_index.import.scss @@ -0,0 +1,3 @@ +a { + display: block; +} \ No newline at end of file