webpack + ts 配置路径别名总结

自我体验加总结:在配置脚手架时,定制别名很有必要,可以使得代码更优雅,可读性更强。但在使用ts的时候,即便项目能够运行,vscode 确时长会提示 can’t find module xxx。总结下来,如果想要完全解决这个问题需要考虑以下两方面:

概述

语法上的正确性

  • 此处主要是通过构建工具,如webpack、parcel、rollup等,在编译时将路径的别名进行替换、拼接。从而使得别名的引用能够映射为正确的路径。

环境的正确性

  • eslint 环境:如果使用的js,未使用ts。则需要保证 eslint 的路径别名配置正确,或者更改报警级别(通常不建议这么做)
  • typescript 环境:如果使用的是ts,多数情况下需要对 tsconfig.json 进行配置。

注:以上两种环境并不一定需要同时配置,例如使用成熟的第三方脚手架时,往往只需要配置其中一种(大多数一其中的一种为基础,自动同步)

具体应对

保证语法的正确性

  • 原理则是通过类似于 loader 的工具,将别名与真实路径进行替换。此处以 webpack.resolve.alias 进行配置,按照官方 API使用即可 webpack.resolve.alias
  • 当无法直接修改 webpack.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;
}
}
}

保证环境的正确性:

typescript 环境

  • tsconfig.json: 需要为 ts 声明路径映射表
{
  "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 字段:
  • tsconfig.extend.json 如下:
{
  "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 字段:
{
"extends": "./tsconfig.extend.json"
}

eslint 环境

// .eslintrc.js
module.exports = {
settings: {
'import/resolver': {
alias: [
['@', './src/']
]
}
}
};

注意

  • 当把需要配置的工作完成后,需要关闭 vscode 并重新启动,才能生效。
  • ts环境与es环境,有时只需要配置一项即可

webpack + ts 配置路径别名无死角方法总结的更多相关文章

  1. 【vue-cli 3.0】 vue.config.js配置 - 路径别名

    如何配置vue-cli 3中vue.config.js的路径别名? 前段时间更新电脑重装了一下vue-cli,发现了vue-cli已经更新到3.0版.用来搭建项目后发现简化了很多,而且配置文件现在可以 ...

  2. typescript项目配置路径别名(路径映射)

    在vue项目中,我们可以利用“@”来指代src目录,在普通webpack项目中,我们也可以通过配置webpack的config来指定路径别名,但是在typescript+webpack项目中我们该怎么 ...

  3. react import 配置路径别名'@',简化import Component的方式

    摘要 在react中,大多数业务逻辑都组件化:极大的减轻了代码的冗余度,如果组件的层次比较深的话,组件的import就比较费劲,在import时使用“../../components/test”的方式 ...

  4. vue配置config ‘./.../.../***/**.vue’路径别名

    cli-4的脚手架配置 因为组件的引用,经常会遇到import * from  '../../../components/common/***.vue‘这样的引入格式,太复杂了,所以可以在vue里面配 ...

  5. vue-cli中自定义路径别名 assets和static文件夹的区别

    转自:vue-cli中自定义路径别名 assets和static文件夹的区别 静态资源处理: assets和static文件夹的区别 相信有很多人知道vue-cli有两个放置静态资源的地方,分别是sr ...

  6. vue项目,webpack中配置src路径别名及使用

    1.项目结构: 2.在build文件夹下的webpack.base.conf.js文件中设置src的路径别名. 3.在js文件或者vue文件的script标签中使用: (1).js文件中导入示例: ( ...

  7. webpack配置路径及hash版本号,利用html-webpack-plugin自动生成html模板

    在项目中,因为需要经常更新文件,但是浏览器缓存问题导致js文件不是最新的,所有想办法添加hash值. 并配置webpack打包文件配置路径: 配置webpack打包文件路径,及非入口 chunk文件: ...

  8. Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名

    Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.创建测试数据 [root@node101.yinzhengj ...

  9. 修改Nodejs内置的npm默认配置路径方法

    Nodejs 内置的npm默认会把模块安装在c盘的用户AppData目录下(吐槽一下:不明白为啥现在的软件都喜欢把资源装在这里) C盘这么小,肯定是不行的,下面一步步修改到D盘 1.打开cmd命令行, ...

随机推荐

  1. MySQL安装+初始化操作(1)

    先去官网下载自己适合的版本,在这里我选择下载Windows 64位版本的,这是下载地址. 1.下载MySQL,步骤①==>步骤② 2.下载后,解压到除系统盘(C盘)之外的其他盘中 3.解压后在b ...

  2. 大型面试现场:一条update sql执行都经历什么?

    导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"从一条update sql执行都经历什么开始,发散开一系列的问题,看看你能抗到第几 ...

  3. Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像)

    Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像) 一.geoserver+openlayers+mysql主要设计思想 1.1 Geo ...

  4. centos7系统忘记root密码

    第一步:开启服务器,在如下界面键入"e"进入编辑 第二步:找到以linux16开头的一行,在本行行尾键入"rd.break" 第三步:输入完成后,按" ...

  5. 自定义 ocelot 中间件输出自定义错误信息

    自定义 ocelot 中间件输出自定义错误信息 Intro ocelot 中默认的 Response 中间件在出错的时候只会设置 StatusCode 没有具体的信息,想要展示自己定义的错误信息的时候 ...

  6. jdk 安装过程配置环境变量 error 的解决过程

    jdk 安装过程配置环境变量 error 的解决过程 问题背景: 我在安装 jdk 过程中在JAVA_HOME和path中添加路径后, cmd 中输入java 和javac均出现错误,因为之前在 D ...

  7. HDU 6900 Residual Polynomial【分治 NTT】

    HDU 6900 Residual Polynomial  题意: 给出一个多项式\(f_1(x) = \sum_{i=0}^na_ix^i\) 对于任意\(i>=2\),满足\(f_i(x) ...

  8. hdu5726 GCD(gcd +二分+rmq)

    Problem Description Give you a sequence of N(N≤100,000) integers : a1,...,an(0<ai≤1000,000,000). ...

  9. 【noi 2.5_1792】迷宫(bfs 或 dfs)

    简单搜索,在n*n的矩阵中,问从起点是否可以到达终点,有些格子不可走,上下左右四个方向都可以走.(N<=100)1.bfs从起点开始走,直到走到终点或全部遍历过一次就结束.2.dfs要一走到终点 ...

  10. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) B. Repainting Street (枚举)

    题意:有\(n\)栋房子,每栋房子都有自己的颜色\(c_i\),你每次可以对连续的长度为\(k\)的区间改变任何房子的颜色,问最少多少次可以使得所有房子颜色相同. 题解:因为只有\(100\)中颜色, ...