Skip to content

Commit 8fc56d0

Browse files
yohodopoeddyerburgh
authored andcommitted
feat: support custom script transformers (#154)
1 parent 77ed857 commit 8fc56d0

File tree

8 files changed

+24
-21
lines changed

8 files changed

+24
-21
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
const { createTransformer } = require('babel-jest')
2+
module.exports = createTransformer({
3+
presets: ['@babel/preset-env']
4+
})

e2e/__projects__/custom-transformers/babel.config.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

e2e/__projects__/custom-transformers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"vue"
2929
],
3030
"transform": {
31-
"^.+\\.js$": "babel-jest",
31+
"^.+\\.js$": "./babel-transformer.js",
3232
"^.+\\.vue$": "vue-jest"
3333
},
3434
"moduleNameMapper": {

lib/process-style.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,8 @@ module.exports = function processStyle(stylePart, filename, config = {}) {
5959
getGlobalResources(vueJestConfig.resources, stylePart.lang) +
6060
stylePart.content
6161

62-
const transformer = getCustomTransformer(
63-
vueJestConfig['transform'],
64-
stylePart.lang
65-
)
62+
const transformer =
63+
getCustomTransformer(vueJestConfig['transform'], stylePart.lang) || {}
6664

6765
// pre process
6866
if (transformer.preprocess) {

lib/process.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@ const path = require('path')
1010
const getVueJestConfig = require('./utils').getVueJestConfig
1111
const logResultErrors = require('./utils').logResultErrors
1212
const stripInlineSourceMap = require('./utils').stripInlineSourceMap
13+
const getCustomTransformer = require('./utils').getCustomTransformer
1314
const throwError = require('./utils').throwError
1415
const babelTransformer = require('babel-jest')
1516
const compilerUtils = require('@vue/component-compiler-utils')
1617
const convertSourceMap = require('convert-source-map')
1718
const generateCode = require('./generate-code')
1819

19-
function resolveTransformer(lang, vueJestConfig) {
20+
function resolveTransformer(lang = 'js', vueJestConfig) {
21+
const transformer = getCustomTransformer(vueJestConfig['transform'], lang)
2022
if (/^typescript$|tsx?$/.test(lang)) {
21-
return typescriptTransformer
23+
return transformer || typescriptTransformer
2224
} else if (/^coffee$|coffeescript$/.test(lang)) {
23-
return coffeescriptTransformer
25+
return transformer || coffeescriptTransformer
2426
} else {
25-
return babelTransformer
27+
return transformer || babelTransformer
2628
}
2729
}
2830

lib/typescript-transformer.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module.exports = {
1111
ensureRequire('typescript', ['typescript'])
1212
const typescript = require('typescript')
1313
const vueJestConfig = getVueJestConfig(config)
14-
const { tsconfig } = getTsJestConfig(config)
14+
const tsconfig = getTsJestConfig(config)
1515
const babelOptions = getBabelOptions(filePath)
1616

1717
const res = typescript.transpileModule(scriptContent, tsconfig)
@@ -24,15 +24,16 @@ module.exports = {
2424
// handle ES modules in TS source code in case user uses non commonjs module
2525
// output and there is no .babelrc.
2626
let inlineBabelOptions = {}
27-
if (tsconfig.compilerOptions.module !== 'commonjs' && !babelOptions) {
27+
if (
28+
tsconfig.compilerOptions.module !== typescript.ModuleKind.CommonJS &&
29+
!babelOptions
30+
) {
2831
inlineBabelOptions = {
2932
plugins: [require('@babel/plugin-transform-modules-commonjs')]
3033
}
3134
}
32-
const customTransformer = getCustomTransformer(
33-
vueJestConfig['transform'],
34-
'js'
35-
)
35+
const customTransformer =
36+
getCustomTransformer(vueJestConfig['transform'], 'js') || {}
3637
const transformer = customTransformer.process
3738
? customTransformer
3839
: babelJest.createTransformer(

lib/utils.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ const getBabelOptions = function loadBabelOptions(filename, options = {}) {
6464

6565
const getTsJestConfig = function getTsJestConfig(config) {
6666
const tr = createTransformer()
67-
return tr.configsFor(config)
67+
const { typescript } = tr.configsFor(config)
68+
return { compilerOptions: typescript.options }
6869
}
6970

7071
function isValidTransformer(transformer) {
@@ -93,7 +94,7 @@ const getCustomTransformer = function getCustomTransformer(
9394
}
9495
return transformer
9596
}
96-
return {}
97+
return null
9798
}
9899

99100
const throwError = function error(msg) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"format": "prettier --no-semi --single-quote --write '**/*.{js,json,md}'",
2222
"format:check": "prettier --no-semi --single-quote --check '**/*.{js,json,md}'",
2323
"lint": "eslint --ignore-path .gitignore '{,!(node_modules)/**/}*.js'",
24-
"lint:fix": "npm run lint -- --fix",
24+
"lint:fix": "npm run lint --fix",
2525
"release": "semantic-release",
2626
"test": "npm run lint && npm run format:check && npm run test:e2e",
2727
"test:e2e": "node e2e/test-runner"

0 commit comments

Comments
 (0)