mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-01-27 01:28:56 -06:00
fix: ts generator & airbnb import/extensions rule compatibility
fix #871
This commit is contained in:
@@ -46,7 +46,7 @@ module.exports = (api, {
|
||||
}
|
||||
}
|
||||
|
||||
if (tsLint && !api.hasPlugin('eslint')) {
|
||||
if (tsLint) {
|
||||
api.extendPackage({
|
||||
scripts: {
|
||||
lint: 'vue-cli-service lint'
|
||||
@@ -114,13 +114,16 @@ module.exports = (api, {
|
||||
const jsRE = /\.js$/
|
||||
const excludeRE = /^test\/e2e\/|\.config\.js$/
|
||||
const convertLintFlags = require('../lib/convertLintFlags')
|
||||
const convertImports = require('../lib/convertImports')
|
||||
api.postProcessFiles(files => {
|
||||
for (const file in files) {
|
||||
if (jsRE.test(file) && !excludeRE.test(file)) {
|
||||
const tsFile = file.replace(jsRE, '.ts')
|
||||
if (!files[tsFile]) {
|
||||
files[tsFile] = convertLintFlags(convertImports(files[file]))
|
||||
let content = files[file]
|
||||
if (tsLint) {
|
||||
content = convertLintFlags(content)
|
||||
}
|
||||
files[tsFile] = content
|
||||
}
|
||||
delete files[file]
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
module.exports = function convertImports (file) {
|
||||
return file
|
||||
.replace(/import (.*from )?('([^']+)'|"([^"]+)")/g, ($1, $2, $3, $4) => {
|
||||
const isRelative = $4.charAt(0) === '.'
|
||||
const isExtensionless = !/\.\w+$/.test($4)
|
||||
const isJS = /\.js$/.test($4)
|
||||
const replaced = isRelative
|
||||
? isExtensionless
|
||||
? $3.replace($4, `${$4}.ts`)
|
||||
: isJS
|
||||
? $3.replace(/\.js('|")$/, '.ts$1')
|
||||
: $3
|
||||
: $3
|
||||
return `import ${$2 || ''}${replaced}`
|
||||
})
|
||||
}
|
||||
@@ -7,6 +7,22 @@ module.exports = {
|
||||
webpack: {
|
||||
config: require.resolve('@vue/cli-service/webpack.config.js')
|
||||
}
|
||||
}
|
||||
},
|
||||
'import/extensions': [
|
||||
'.js',
|
||||
'.jsx',
|
||||
'.mjs',
|
||||
'.ts',
|
||||
'.tsx'
|
||||
]
|
||||
},
|
||||
rules: {
|
||||
'import/extensions': ['error', 'always', {
|
||||
js: 'never',
|
||||
mjs: 'never',
|
||||
jsx: 'never',
|
||||
ts: 'never',
|
||||
tsx: 'never'
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user