webpack + ts 配置路径别名无死角方法总结
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 环境
- 如果是个人配置 eslint , 则需要 增加两个插件
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/']
]
}
}
};
注意
- 当把需要配置的工作完成后,需要关闭 vscode 并重新启动,才能生效。
- ts环境与es环境,有时只需要配置一项即可
webpack + ts 配置路径别名无死角方法总结的更多相关文章
- 【vue-cli 3.0】 vue.config.js配置 - 路径别名
如何配置vue-cli 3中vue.config.js的路径别名? 前段时间更新电脑重装了一下vue-cli,发现了vue-cli已经更新到3.0版.用来搭建项目后发现简化了很多,而且配置文件现在可以 ...
- typescript项目配置路径别名(路径映射)
在vue项目中,我们可以利用“@”来指代src目录,在普通webpack项目中,我们也可以通过配置webpack的config来指定路径别名,但是在typescript+webpack项目中我们该怎么 ...
- react import 配置路径别名'@',简化import Component的方式
摘要 在react中,大多数业务逻辑都组件化:极大的减轻了代码的冗余度,如果组件的层次比较深的话,组件的import就比较费劲,在import时使用“../../components/test”的方式 ...
- vue配置config ‘./.../.../***/**.vue’路径别名
cli-4的脚手架配置 因为组件的引用,经常会遇到import * from '../../../components/common/***.vue‘这样的引入格式,太复杂了,所以可以在vue里面配 ...
- vue-cli中自定义路径别名 assets和static文件夹的区别
转自:vue-cli中自定义路径别名 assets和static文件夹的区别 静态资源处理: assets和static文件夹的区别 相信有很多人知道vue-cli有两个放置静态资源的地方,分别是sr ...
- vue项目,webpack中配置src路径别名及使用
1.项目结构: 2.在build文件夹下的webpack.base.conf.js文件中设置src的路径别名. 3.在js文件或者vue文件的script标签中使用: (1).js文件中导入示例: ( ...
- webpack配置路径及hash版本号,利用html-webpack-plugin自动生成html模板
在项目中,因为需要经常更新文件,但是浏览器缓存问题导致js文件不是最新的,所有想办法添加hash值. 并配置webpack打包文件配置路径: 配置webpack打包文件路径,及非入口 chunk文件: ...
- Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名
Httpd服务入门知识-Httpd服务常见配置案例之定义路径别名 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建测试数据 [root@node101.yinzhengj ...
- 修改Nodejs内置的npm默认配置路径方法
Nodejs 内置的npm默认会把模块安装在c盘的用户AppData目录下(吐槽一下:不明白为啥现在的软件都喜欢把资源装在这里) C盘这么小,肯定是不行的,下面一步步修改到D盘 1.打开cmd命令行, ...
随机推荐
- 线上服务器CPU100%排查,Linux进程消耗查看
线上服务器CPU100%排查,Linux进程消耗查看 1.排查步骤 1.1Linux下排查 1.1.1查消耗cpu最高的进程PID 1.1.2根据PID查出消耗cpu最高的线程号 1.1.3根据线程号 ...
- Spring MVC—模型数据,转发重定向,静态资源处理方式
Spring MVC处理模型数据 添加模型数据的方法 ModelAndView Map及Model SessionAttribute ModelAttribute Spring MVC转发和重定向 S ...
- Spark高级数据分析——纽约出租车轨迹的空间和时间数据分析
Spark高级数据分析--纽约出租车轨迹的空间和时间数据分析 一.地理空间分析: 二.pom.xml 原文地址:https://www.jianshu.com/p/eb6f3e0c09b5 作者:II ...
- BGP总结(三)
3.BGP路由汇总 在大规模的网络中,BGP路由表十分庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性.路由聚合是将多条路由合并的机制,它通过只向对等体发送聚合后的路 ...
- codeforces 1461D,离线查询是什么神仙方法,为什么快这么多?
大家好,欢迎来到codeforces专题. 今天我们选择的题目是1461场次的D题,这题全场通过了3702人,从难度上来说比较适中.既没有很难,也很适合同学们练手.另外它用到了一种全新的思想是在我们之 ...
- mysql高级day2
Mysql高级-day02 1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & ...
- 数理统计7:矩法估计(MM)、极大似然估计(MLE),定时截尾实验
在上一篇文章的最后,我们指出,参数估计是不可能穷尽讨论的,要想对各种各样的参数作出估计,就需要一定的参数估计方法.今天我们将讨论常用的点估计方法:矩估计.极大似然估计,它们各有优劣,但都很重要.由于本 ...
- Codeforces Global Round 11 A. Avoiding Zero(前缀和)
题目链接:https://codeforces.com/contest/1427/problem/A 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正.负前缀和,如 ...
- Codeforces Round #627 (Div. 3) D - Pair of Topics(双指针)
题意: 有长为n的a,b两序列,问满足ai+aj>bi+bj(i<j)的i,j对数. 思路: 移项得:(ai-bi)+(aj-bj)>0,i<j即i!=j,用c序列保存所有ai ...
- 【hdu 4859】海岸线(图论--网络流最小割)
题意:有一个区域,有'.'的陆地,'D'的深海域,'E'的浅海域.其中浅海域可以填充为陆地.这里的陆地区域不联通,并且整个地图都处在海洋之中.问填充一定浅海域之后所有岛屿的最长的海岸线之和. 解法:最 ...