From 84e6e6361bca17053312f8fc93dc90c03cd55a67 Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Sun, 30 Jun 2019 15:58:12 +0300 Subject: [PATCH 1/5] fix: fixed TS plugin to ask for renaming files --- .../@vue/cli-plugin-typescript/generator/index.js | 10 +++++++--- .../generator/template/tsconfig.json | 3 +++ packages/@vue/cli-plugin-typescript/prompts.js | 12 ++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli-plugin-typescript/generator/index.js b/packages/@vue/cli-plugin-typescript/generator/index.js index 55f77531cc..b67aeb38fb 100644 --- a/packages/@vue/cli-plugin-typescript/generator/index.js +++ b/packages/@vue/cli-plugin-typescript/generator/index.js @@ -1,7 +1,9 @@ module.exports = (api, { classComponent, tsLint, - lintOn = [] + lintOn = [], + convertJsToTs, + allowJs }, _, invoking) => { if (typeof lintOn === 'string') { lintOn = lintOn.split(',') @@ -74,6 +76,10 @@ module.exports = (api, { // eslint-disable-next-line node/no-extraneous-require require('@vue/cli-plugin-eslint/generator').applyTS(api) } + + if (convertJsToTs) { + require('./convert')(api, { tsLint }) + } } api.render('./template', { @@ -81,6 +87,4 @@ module.exports = (api, { hasMocha: api.hasPlugin('unit-mocha'), hasJest: api.hasPlugin('unit-jest') }) - - require('./convert')(api, { tsLint }) } diff --git a/packages/@vue/cli-plugin-typescript/generator/template/tsconfig.json b/packages/@vue/cli-plugin-typescript/generator/template/tsconfig.json index 6e3ea40371..827e958b2a 100644 --- a/packages/@vue/cli-plugin-typescript/generator/template/tsconfig.json +++ b/packages/@vue/cli-plugin-typescript/generator/template/tsconfig.json @@ -9,6 +9,9 @@ <%_ if (options.classComponent) { _%> "experimentalDecorators": true, <%_ } _%> + <%_ if (options.allowJs) { _%> + "allowJs": true, + <%_ } _%> "esModuleInterop": true, "allowSyntheticDefaultImports": true, "sourceMap": true, diff --git a/packages/@vue/cli-plugin-typescript/prompts.js b/packages/@vue/cli-plugin-typescript/prompts.js index 49ff4c97f0..f5891a0252 100644 --- a/packages/@vue/cli-plugin-typescript/prompts.js +++ b/packages/@vue/cli-plugin-typescript/prompts.js @@ -36,6 +36,18 @@ const prompts = module.exports = [ value: 'commit' } ] + }, + { + name: `convertJsToTs`, + type: `confirm`, + message: `Convert all .js files to .ts?`, + default: false + }, + { + name: `allowJs`, + type: `confirm`, + message: `Allow .js files to be compiled?`, + default: false } ] From c62e6fa6f3e17bd8f33f4dfa6b76ac71d4c5683d Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Sun, 30 Jun 2019 17:02:46 +0300 Subject: [PATCH 2/5] fix: refactored renaming main file --- .../generator/convert.js | 32 ++++++++++++------- .../cli-plugin-typescript/generator/index.js | 6 ++-- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/@vue/cli-plugin-typescript/generator/convert.js b/packages/@vue/cli-plugin-typescript/generator/convert.js index 27b4a11066..c97c053bbe 100644 --- a/packages/@vue/cli-plugin-typescript/generator/convert.js +++ b/packages/@vue/cli-plugin-typescript/generator/convert.js @@ -1,22 +1,30 @@ -module.exports = (api, { tsLint = false } = {}) => { - // delete all js files that have a ts file of the same name - // and simply rename other js files to ts +module.exports = (api, { tsLint = false } = {}, convertAllFiles = true) => { const jsRE = /\.js$/ const excludeRE = /^tests\/e2e\/|(\.config|rc)\.js$/ const convertLintFlags = require('../lib/convertLintFlags') api.postProcessFiles(files => { - for (const file in files) { - if (jsRE.test(file) && !excludeRE.test(file)) { - const tsFile = file.replace(jsRE, '.ts') - if (!files[tsFile]) { - let content = files[file] - if (tsLint) { - content = convertLintFlags(content) + if (convertAllFiles) { + // delete all js files that have a ts file of the same name + // and simply rename other js files to ts + for (const file in files) { + if (jsRE.test(file) && !excludeRE.test(file)) { + const tsFile = file.replace(jsRE, '.ts') + if (!files[tsFile]) { + let content = files[file] + if (tsLint) { + content = convertLintFlags(content) + } + files[tsFile] = content } - files[tsFile] = content + delete files[file] } - delete files[file] } + } else { + // rename only main file to main.ts + const content = files[api.entryFile] + const tsFile = api.entryFile.replace(jsRE, '.ts') + files[tsFile] = content + delete files[api.entryFile] } }) } diff --git a/packages/@vue/cli-plugin-typescript/generator/index.js b/packages/@vue/cli-plugin-typescript/generator/index.js index b67aeb38fb..61be5664f1 100644 --- a/packages/@vue/cli-plugin-typescript/generator/index.js +++ b/packages/@vue/cli-plugin-typescript/generator/index.js @@ -76,10 +76,6 @@ module.exports = (api, { // eslint-disable-next-line node/no-extraneous-require require('@vue/cli-plugin-eslint/generator').applyTS(api) } - - if (convertJsToTs) { - require('./convert')(api, { tsLint }) - } } api.render('./template', { @@ -87,4 +83,6 @@ module.exports = (api, { hasMocha: api.hasPlugin('unit-mocha'), hasJest: api.hasPlugin('unit-jest') }) + + require('./convert')(api, { tsLint }, convertJsToTs) } From 5181ee8cb3fc9cb234968e25752d293720b4fb63 Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Mon, 1 Jul 2019 15:55:57 +0300 Subject: [PATCH 3/5] fix: set convert js to ts flag to true by default --- packages/@vue/cli-plugin-typescript/prompts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-plugin-typescript/prompts.js b/packages/@vue/cli-plugin-typescript/prompts.js index f5891a0252..d47fa3306e 100644 --- a/packages/@vue/cli-plugin-typescript/prompts.js +++ b/packages/@vue/cli-plugin-typescript/prompts.js @@ -41,7 +41,7 @@ const prompts = module.exports = [ name: `convertJsToTs`, type: `confirm`, message: `Convert all .js files to .ts?`, - default: false + default: true }, { name: `allowJs`, From 74ce7b15a202cdafb1ae3aa0f1b4acae2354af81 Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Mon, 1 Jul 2019 15:59:37 +0300 Subject: [PATCH 4/5] fix: added tsLint check to main.js renaming --- packages/@vue/cli-plugin-typescript/generator/convert.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@vue/cli-plugin-typescript/generator/convert.js b/packages/@vue/cli-plugin-typescript/generator/convert.js index c97c053bbe..de93e6a9bb 100644 --- a/packages/@vue/cli-plugin-typescript/generator/convert.js +++ b/packages/@vue/cli-plugin-typescript/generator/convert.js @@ -21,8 +21,11 @@ module.exports = (api, { tsLint = false } = {}, convertAllFiles = true) => { } } else { // rename only main file to main.ts - const content = files[api.entryFile] const tsFile = api.entryFile.replace(jsRE, '.ts') + let content = files[api.entryFile] + if (tsLint) { + content = convertLintFlags(content) + } files[tsFile] = content delete files[api.entryFile] } From c2e1fc6fb43d0555e3d673e37d6d5e2dff64d5ad Mon Sep 17 00:00:00 2001 From: Natalia Tepluhina Date: Tue, 2 Jul 2019 19:04:25 +0300 Subject: [PATCH 5/5] fix: merged options --- packages/@vue/cli-plugin-typescript/generator/convert.js | 2 +- packages/@vue/cli-plugin-typescript/generator/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-plugin-typescript/generator/convert.js b/packages/@vue/cli-plugin-typescript/generator/convert.js index de93e6a9bb..4b1a7c27e6 100644 --- a/packages/@vue/cli-plugin-typescript/generator/convert.js +++ b/packages/@vue/cli-plugin-typescript/generator/convert.js @@ -1,4 +1,4 @@ -module.exports = (api, { tsLint = false } = {}, convertAllFiles = true) => { +module.exports = (api, { tsLint = false, convertAllFiles = true } = {}) => { const jsRE = /\.js$/ const excludeRE = /^tests\/e2e\/|(\.config|rc)\.js$/ const convertLintFlags = require('../lib/convertLintFlags') diff --git a/packages/@vue/cli-plugin-typescript/generator/index.js b/packages/@vue/cli-plugin-typescript/generator/index.js index 61be5664f1..6d3eb045da 100644 --- a/packages/@vue/cli-plugin-typescript/generator/index.js +++ b/packages/@vue/cli-plugin-typescript/generator/index.js @@ -84,5 +84,5 @@ module.exports = (api, { hasJest: api.hasPlugin('unit-jest') }) - require('./convert')(api, { tsLint }, convertJsToTs) + require('./convert')(api, { tsLint, convertJsToTs }) }