From 13426a02f7293da14ee21d96d02f546890b8d8b3 Mon Sep 17 00:00:00 2001 From: Vamsi Kalyan A Date: Wed, 30 Jan 2019 17:36:39 +0530 Subject: [PATCH 1/2] let the script processer pick custom transformers when present --- .../custom-transformers/babel-transformer.js | 4 ++++ e2e/__projects__/custom-transformers/babel.config.js | 3 --- e2e/__projects__/custom-transformers/package.json | 2 +- lib/process-style.js | 6 ++---- lib/process.js | 10 ++++++---- lib/typescript-transformer.js | 6 ++---- lib/utils.js | 2 +- package.json | 2 +- 8 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 e2e/__projects__/custom-transformers/babel-transformer.js delete mode 100644 e2e/__projects__/custom-transformers/babel.config.js diff --git a/e2e/__projects__/custom-transformers/babel-transformer.js b/e2e/__projects__/custom-transformers/babel-transformer.js new file mode 100644 index 00000000..2be39a8a --- /dev/null +++ b/e2e/__projects__/custom-transformers/babel-transformer.js @@ -0,0 +1,4 @@ +const { createTransformer } = require('babel-jest') +module.exports = createTransformer({ + presets: ['@babel/preset-env'] +}) diff --git a/e2e/__projects__/custom-transformers/babel.config.js b/e2e/__projects__/custom-transformers/babel.config.js deleted file mode 100644 index 7db9b6f5..00000000 --- a/e2e/__projects__/custom-transformers/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: ['@babel/preset-env'] -} diff --git a/e2e/__projects__/custom-transformers/package.json b/e2e/__projects__/custom-transformers/package.json index 013e5f18..b4c555cb 100644 --- a/e2e/__projects__/custom-transformers/package.json +++ b/e2e/__projects__/custom-transformers/package.json @@ -28,7 +28,7 @@ "vue" ], "transform": { - "^.+\\.js$": "babel-jest", + "^.+\\.js$": "./babel-transformer.js", "^.+\\.vue$": "vue-jest" }, "moduleNameMapper": { diff --git a/lib/process-style.js b/lib/process-style.js index 2c26c108..b1760dc3 100644 --- a/lib/process-style.js +++ b/lib/process-style.js @@ -59,10 +59,8 @@ module.exports = function processStyle(stylePart, filename, config = {}) { getGlobalResources(vueJestConfig.resources, stylePart.lang) + stylePart.content - const transformer = getCustomTransformer( - vueJestConfig['transform'], - stylePart.lang - ) + const transformer = + getCustomTransformer(vueJestConfig['transform'], stylePart.lang) || {} // pre process if (transformer.preprocess) { diff --git a/lib/process.js b/lib/process.js index 55a846aa..dd3b11af 100644 --- a/lib/process.js +++ b/lib/process.js @@ -10,19 +10,21 @@ const path = require('path') const getVueJestConfig = require('./utils').getVueJestConfig const logResultErrors = require('./utils').logResultErrors const stripInlineSourceMap = require('./utils').stripInlineSourceMap +const getCustomTransformer = require('./utils').getCustomTransformer const throwError = require('./utils').throwError const babelTransformer = require('babel-jest') const compilerUtils = require('@vue/component-compiler-utils') const convertSourceMap = require('convert-source-map') const generateCode = require('./generate-code') -function resolveTransformer(lang, vueJestConfig) { +function resolveTransformer(lang = 'js', vueJestConfig) { + const transformer = getCustomTransformer(vueJestConfig['transform'], lang) if (/^typescript$|tsx?$/.test(lang)) { - return typescriptTransformer + return transformer || typescriptTransformer } else if (/^coffee$|coffeescript$/.test(lang)) { - return coffeescriptTransformer + return transformer || coffeescriptTransformer } else { - return babelTransformer + return transformer || babelTransformer } } diff --git a/lib/typescript-transformer.js b/lib/typescript-transformer.js index 7650234a..024676fe 100644 --- a/lib/typescript-transformer.js +++ b/lib/typescript-transformer.js @@ -29,10 +29,8 @@ module.exports = { plugins: [require('@babel/plugin-transform-modules-commonjs')] } } - const customTransformer = getCustomTransformer( - vueJestConfig['transform'], - 'js' - ) + const customTransformer = + getCustomTransformer(vueJestConfig['transform'], 'js') || {} const transformer = customTransformer.process ? customTransformer : babelJest.createTransformer( diff --git a/lib/utils.js b/lib/utils.js index c1bd16a3..58d0b3ca 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -93,7 +93,7 @@ const getCustomTransformer = function getCustomTransformer( } return transformer } - return {} + return null } const throwError = function error(msg) { diff --git a/package.json b/package.json index e2b6bc93..7771330e 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "format": "prettier --no-semi --single-quote --write '**/*.{js,json,md}'", "format:check": "prettier --no-semi --single-quote --check '**/*.{js,json,md}'", "lint": "eslint --ignore-path .gitignore '{,!(node_modules)/**/}*.js'", - "lint:fix": "npm run lint -- --fix", + "lint:fix": "npm run lint --fix", "release": "semantic-release", "test": "npm run lint && npm run format:check && npm run test:e2e", "test:e2e": "node e2e/test-runner" From 723b0fdb2ab7930525fc27f31f36ce36a18f6a60 Mon Sep 17 00:00:00 2001 From: Vamsi Kalyan Date: Wed, 30 Jan 2019 22:55:23 +0530 Subject: [PATCH 2/2] fix(typescript-config): extends option in tsconfig Fixes #144 --- lib/typescript-transformer.js | 7 +++++-- lib/utils.js | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/typescript-transformer.js b/lib/typescript-transformer.js index 024676fe..dcfbb09c 100644 --- a/lib/typescript-transformer.js +++ b/lib/typescript-transformer.js @@ -11,7 +11,7 @@ module.exports = { ensureRequire('typescript', ['typescript']) const typescript = require('typescript') const vueJestConfig = getVueJestConfig(config) - const { tsconfig } = getTsJestConfig(config) + const tsconfig = getTsJestConfig(config) const babelOptions = getBabelOptions(filePath) const res = typescript.transpileModule(scriptContent, tsconfig) @@ -24,7 +24,10 @@ module.exports = { // handle ES modules in TS source code in case user uses non commonjs module // output and there is no .babelrc. let inlineBabelOptions = {} - if (tsconfig.compilerOptions.module !== 'commonjs' && !babelOptions) { + if ( + tsconfig.compilerOptions.module !== typescript.ModuleKind.CommonJS && + !babelOptions + ) { inlineBabelOptions = { plugins: [require('@babel/plugin-transform-modules-commonjs')] } diff --git a/lib/utils.js b/lib/utils.js index 58d0b3ca..29b4b886 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -64,7 +64,8 @@ const getBabelOptions = function loadBabelOptions(filename, options = {}) { const getTsJestConfig = function getTsJestConfig(config) { const tr = createTransformer() - return tr.configsFor(config) + const { typescript } = tr.configsFor(config) + return { compilerOptions: typescript.options } } function isValidTransformer(transformer) {