自我體驗加總結:在配置腳手架時,定製別名頗有必要,可使得代碼更優雅,可讀性更強。但在使用ts的時候,即使項目可以運行,vscode 確時長會提示 can’t find module xxx
。總結下來,若是想要徹底解決這個問題須要考慮如下兩方面:react
tsconfig.json
進行配置。注:以上兩種環境並不必定須要同時配置,例如使用成熟的第三方腳手架時,每每只須要配置其中一種(大多數一其中的一種爲基礎,自動同步)webpack
loader
的工具,將別名與真實路徑進行替換。此處以 webpack.resolve.alias 進行配置,按照官方 API使用便可 webpack.resolve.aliaswebpack.config.js
,使用 第三方配置工具時候 (此處以craco 配置 create-react-app 爲例), :// craco.config.js const path = require('path'); module.exports = { webpack: { configure: (webpackConfig, { env, paths }) => { let {src} = webpackConfig.resolve.alias; webpackConfig.resolve.alias = Object.assign(webpackConfig.resolve.alias, { '@': src, '@components': path.resolve(src, 'components') }) return webpackConfig; } } }
{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"], "@typings/*": ["src/typings/*"], "@components/*": ["src/components/*"], "@style/*": ["src/style/*"], "@utils/*": ["src/utils/*"], "@router/*": ["src/router/*"], "@store/*": ["src/store/*"], } } }
tsconfig.json
, 當發現修改的配置未生效時大機率會是這種狀況,須要新建文件,並添加 extends
字段:{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"], "@typings/*": ["src/typings/*"], "@components/*": ["src/components/*"], "@style/*": ["src/style/*"], "@utils/*": ["src/utils/*"], "@router/*": ["src/router/*"], "@store/*": ["src/store/*"], } } }
{ "extends": "./tsconfig.extend.json" }
eslint-plugin-import eslint-import-resolver-alias
, https://www.npmjs.com/package/eslint-import-resolver-alias// .eslintrc.js module.exports = { settings: { 'import/resolver': { alias: [ ['@', './src/'] ] } } };