diff --git a/e2e/2.x/sass-importer/entry/babel-transformer.js b/e2e/2.x/sass-importer/entry/babel-transformer.js
new file mode 100644
index 00000000..193503e5
--- /dev/null
+++ b/e2e/2.x/sass-importer/entry/babel-transformer.js
@@ -0,0 +1,4 @@
+const { createTransformer } = require('babel-jest').default
+module.exports = createTransformer({
+ presets: ['@babel/preset-env']
+})
diff --git a/e2e/2.x/sass-importer/entry/components/Entry.vue b/e2e/2.x/sass-importer/entry/components/Entry.vue
new file mode 100644
index 00000000..63adb0ce
--- /dev/null
+++ b/e2e/2.x/sass-importer/entry/components/Entry.vue
@@ -0,0 +1,24 @@
+
+
+
Entry
+
+
+
+
+
+
+
diff --git a/e2e/2.x/sass-importer/entry/package.json b/e2e/2.x/sass-importer/entry/package.json
new file mode 100644
index 00000000..fae72c75
--- /dev/null
+++ b/e2e/2.x/sass-importer/entry/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "vue2-sass-importer-entry",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache --coverage test.js"
+ },
+ "dependencies": {
+ "vue": "^2.5.21",
+ "vue-template-compiler": "^2.5.21",
+ "vue2-sass-importer-lib": "file:../lib",
+ "vue2-sass-importer-sass-lib": "file:../sass-lib-v2"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "@vue/test-utils": "^1.1.0",
+ "babel-jest": "^28.0.2",
+ "jest": "28.x",
+ "jest-environment-jsdom": "28.0.2",
+ "postcss": "^7.0.13",
+ "postcss-color-function": "^4.0.1",
+ "sass": "^1.23.7",
+ "@vue/vue2-jest": "^28.0.0"
+ },
+ "jest": {
+ "testEnvironment": "jsdom",
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transformIgnorePatterns": [
+ "/node_modules/.*(? {
+ const wrapper = mount(Entry)
+ expect(wrapper).toBeDefined()
+})
diff --git a/e2e/2.x/sass-importer/lib/index.vue b/e2e/2.x/sass-importer/lib/index.vue
new file mode 100644
index 00000000..50d3742c
--- /dev/null
+++ b/e2e/2.x/sass-importer/lib/index.vue
@@ -0,0 +1,11 @@
+
+ Lib Component
+
+
+
diff --git a/e2e/2.x/sass-importer/lib/package.json b/e2e/2.x/sass-importer/lib/package.json
new file mode 100644
index 00000000..330adfab
--- /dev/null
+++ b/e2e/2.x/sass-importer/lib/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "vue2-sass-importer-lib",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "main": "index.vue",
+ "files": [
+ "index.vue"
+ ],
+ "scripts": {
+ "test": "echo 'No tests found.'"
+ },
+ "dependencies": {
+ "vue2-sass-importer-sass-lib": "file:../sass-lib-v1"
+ },
+ "peerDependencies": {
+ "vue": "^2.5.21"
+ }
+}
diff --git a/e2e/2.x/sass-importer/sass-lib-v1/index.scss b/e2e/2.x/sass-importer/sass-lib-v1/index.scss
new file mode 100644
index 00000000..05795e0f
--- /dev/null
+++ b/e2e/2.x/sass-importer/sass-lib-v1/index.scss
@@ -0,0 +1,3 @@
+@mixin my-v1-mixin {
+ color: blue;
+}
diff --git a/e2e/2.x/sass-importer/sass-lib-v1/package.json b/e2e/2.x/sass-importer/sass-lib-v1/package.json
new file mode 100644
index 00000000..cc5fc32c
--- /dev/null
+++ b/e2e/2.x/sass-importer/sass-lib-v1/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "vue2-sass-importer-sass-lib",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "files": [
+ "index.scss"
+ ],
+ "scripts": {
+ "test": "echo 'No tests found.'"
+ }
+}
diff --git a/e2e/2.x/sass-importer/sass-lib-v2/index.scss b/e2e/2.x/sass-importer/sass-lib-v2/index.scss
new file mode 100644
index 00000000..8f5e144d
--- /dev/null
+++ b/e2e/2.x/sass-importer/sass-lib-v2/index.scss
@@ -0,0 +1,3 @@
+@mixin my-v2-mixin {
+ color: red;
+}
diff --git a/e2e/2.x/sass-importer/sass-lib-v2/package.json b/e2e/2.x/sass-importer/sass-lib-v2/package.json
new file mode 100644
index 00000000..b9b40960
--- /dev/null
+++ b/e2e/2.x/sass-importer/sass-lib-v2/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "vue2-sass-importer-sass-lib",
+ "version": "2.0.0",
+ "license": "MIT",
+ "private": true,
+ "files": [
+ "index.scss"
+ ],
+ "scripts": {
+ "test": "echo 'No tests found.'"
+ }
+}
diff --git a/e2e/3.x/sass-importer/entry/babel-transformer.js b/e2e/3.x/sass-importer/entry/babel-transformer.js
new file mode 100644
index 00000000..193503e5
--- /dev/null
+++ b/e2e/3.x/sass-importer/entry/babel-transformer.js
@@ -0,0 +1,4 @@
+const { createTransformer } = require('babel-jest').default
+module.exports = createTransformer({
+ presets: ['@babel/preset-env']
+})
diff --git a/e2e/3.x/sass-importer/entry/components/Entry.vue b/e2e/3.x/sass-importer/entry/components/Entry.vue
new file mode 100644
index 00000000..367e3f6b
--- /dev/null
+++ b/e2e/3.x/sass-importer/entry/components/Entry.vue
@@ -0,0 +1,24 @@
+
+
+
Entry
+
+
+
+
+
+
+
diff --git a/e2e/3.x/sass-importer/entry/package.json b/e2e/3.x/sass-importer/entry/package.json
new file mode 100644
index 00000000..d81dc43d
--- /dev/null
+++ b/e2e/3.x/sass-importer/entry/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "vue3-sass-importer-entry",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache --coverage test.js"
+ },
+ "dependencies": {
+ "vue": "^3.2.22",
+ "vue3-sass-importer-lib": "file:../lib",
+ "vue3-sass-importer-sass-lib": "file:../sass-lib-v2"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "@vue/test-utils": "^2.0.0-rc.10",
+ "babel-jest": "^28.0.2",
+ "jest": "28.x",
+ "jest-environment-jsdom": "28.0.2",
+ "postcss": "^7.0.13",
+ "postcss-color-function": "^4.0.1",
+ "sass": "^1.23.7",
+ "@vue/vue3-jest": "^28.0.0"
+ },
+ "jest": {
+ "testEnvironment": "jsdom",
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transformIgnorePatterns": [
+ "/node_modules/.*(? {
+ const wrapper = mount(Entry)
+ expect(wrapper).toBeDefined()
+})
diff --git a/e2e/3.x/sass-importer/lib/index.vue b/e2e/3.x/sass-importer/lib/index.vue
new file mode 100644
index 00000000..fc3c0231
--- /dev/null
+++ b/e2e/3.x/sass-importer/lib/index.vue
@@ -0,0 +1,11 @@
+
+ Lib Component
+
+
+
diff --git a/e2e/3.x/sass-importer/lib/package.json b/e2e/3.x/sass-importer/lib/package.json
new file mode 100644
index 00000000..6f19b178
--- /dev/null
+++ b/e2e/3.x/sass-importer/lib/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "vue3-sass-importer-lib",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "main": "index.vue",
+ "files": [
+ "index.vue"
+ ],
+ "scripts": {
+ "test": "echo 'No tests found.'"
+ },
+ "dependencies": {
+ "vue3-sass-importer-sass-lib": "file:../sass-lib-v1"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.22"
+ }
+}
diff --git a/e2e/3.x/sass-importer/sass-lib-v1/index.scss b/e2e/3.x/sass-importer/sass-lib-v1/index.scss
new file mode 100644
index 00000000..05795e0f
--- /dev/null
+++ b/e2e/3.x/sass-importer/sass-lib-v1/index.scss
@@ -0,0 +1,3 @@
+@mixin my-v1-mixin {
+ color: blue;
+}
diff --git a/e2e/3.x/sass-importer/sass-lib-v1/package.json b/e2e/3.x/sass-importer/sass-lib-v1/package.json
new file mode 100644
index 00000000..5717428c
--- /dev/null
+++ b/e2e/3.x/sass-importer/sass-lib-v1/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "vue3-sass-importer-sass-lib",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "files": [
+ "index.scss"
+ ],
+ "scripts": {
+ "test": "echo 'No tests found.'"
+ }
+}
diff --git a/e2e/3.x/sass-importer/sass-lib-v2/index.scss b/e2e/3.x/sass-importer/sass-lib-v2/index.scss
new file mode 100644
index 00000000..8f5e144d
--- /dev/null
+++ b/e2e/3.x/sass-importer/sass-lib-v2/index.scss
@@ -0,0 +1,3 @@
+@mixin my-v2-mixin {
+ color: red;
+}
diff --git a/e2e/3.x/sass-importer/sass-lib-v2/package.json b/e2e/3.x/sass-importer/sass-lib-v2/package.json
new file mode 100644
index 00000000..d06a853a
--- /dev/null
+++ b/e2e/3.x/sass-importer/sass-lib-v2/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "vue3-sass-importer-sass-lib",
+ "version": "2.0.0",
+ "license": "MIT",
+ "private": true,
+ "files": [
+ "index.scss"
+ ],
+ "scripts": {
+ "test": "echo 'No tests found.'"
+ }
+}
diff --git a/package.json b/package.json
index 9a6e0e26..6522ba8f 100644
--- a/package.json
+++ b/package.json
@@ -8,10 +8,14 @@
"workspaces": {
"packages": [
"packages/*",
- "e2e/**"
+ "e2e/2.x/*",
+ "e2e/2.x/**/entry",
+ "e2e/3.x/*",
+ "e2e/3.x/**/entry"
],
"nohoist": [
- "**/vue"
+ "**/vue",
+ "**/vue2-sass-importer-sass-lib"
]
},
"scripts": {
diff --git a/packages/vue2-jest/lib/module-name-mapper-helper.js b/packages/vue2-jest/lib/module-name-mapper-helper.js
index eaaba904..994d0421 100644
--- a/packages/vue2-jest/lib/module-name-mapper-helper.js
+++ b/packages/vue2-jest/lib/module-name-mapper-helper.js
@@ -31,7 +31,7 @@ function resolveSass(to, importPath, fileType) {
for (const filename of filenames) {
try {
- return require.resolve(path.join(dirname, filename))
+ return require.resolve(path.join(dirname, filename), { paths: [to] })
} catch (_) {}
}
}
diff --git a/packages/vue3-jest/lib/module-name-mapper-helper.js b/packages/vue3-jest/lib/module-name-mapper-helper.js
index 85ed1c23..8bad03a3 100644
--- a/packages/vue3-jest/lib/module-name-mapper-helper.js
+++ b/packages/vue3-jest/lib/module-name-mapper-helper.js
@@ -14,7 +14,9 @@ function resolve(to, importPath, fileType) {
if (path.isAbsolute(importPath)) {
return importPath
} else if (matchModuleImport.test(importPath)) {
- return require.resolve(importPath.replace(matchModuleImport, ''))
+ return require.resolve(importPath.replace(matchModuleImport, ''), {
+ paths: [to]
+ })
}
return path.join(path.dirname(to), importPath)
}
diff --git a/yarn.lock b/yarn.lock
index 9200e3c1..755a6220 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10865,6 +10865,28 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
+"vue2-sass-importer-lib@file:e2e/2.x/sass-importer/lib":
+ version "1.0.0"
+ dependencies:
+ vue2-sass-importer-sass-lib "file:../../.cache/yarn/v6/npm-vue2-sass-importer-lib-1.0.0-1087f856-8699-4ac6-a0fa-2288988256c2-1656107462461/node_modules/sass-lib-v1"
+
+"vue2-sass-importer-sass-lib@file:e2e/2.x/sass-importer/sass-lib-v1":
+ version "1.0.0"
+
+"vue2-sass-importer-sass-lib@file:e2e/2.x/sass-importer/sass-lib-v2":
+ version "2.0.0"
+
+"vue3-sass-importer-lib@file:e2e/3.x/sass-importer/lib":
+ version "1.0.0"
+ dependencies:
+ vue3-sass-importer-sass-lib "file:../../.cache/yarn/v6/npm-vue3-sass-importer-lib-1.0.0-c866bb73-f527-47b9-932d-498dea4cf3d0-1656107462461/node_modules/sass-lib-v1"
+
+"vue3-sass-importer-sass-lib@file:e2e/3.x/sass-importer/sass-lib-v1":
+ version "1.0.0"
+
+"vue3-sass-importer-sass-lib@file:e2e/3.x/sass-importer/sass-lib-v2":
+ version "2.0.0"
+
vue@^2.4.2, vue@^2.5.21:
version "2.6.14"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235"