vscode 在标签的src引入别名路径_Typescript项目别名(alias)配置清单

2023-11-14

综述

新手写Typescript项目,别名配置是经常出问题的环节,有的人遇到这种问题,如果一时半会儿解决不了,干脆就不用别名了,这显然是不合理的。本文给出一个Typescript项目各种环节的别名配置清单,如果遇到问题,可以对照着检查一下。

Typescript项目需要识别别名的环节,主要包括:vscode语法检查、tsc编译、单元测试、lint、webpack打包。如果是node项目,还要考虑node运行时的别名识别。

其中,vscode语法检查、tsc编译,以及单元测试,这三个环节依赖的是tsconfig.json中的别名配置;webpack打包依赖的是webpack.config.js中的别名配置;node的别名识别需要载入一个叫做module-alias的包。

tsconfig

tsconfig中负责别名配置的是两个字段:

"baseUrl"

其中baseUrl用来描述计算相对路径时的根目录,paths用来描述路径别名。注意:如果配置了paths,就一定要配置baseUrl,否则后面会遇到问题

tsconfig配置好之后,如何生效呢?vscode语法检查和tsc编译基本上不需要操心,自动生效。比较容易搞错的是单元测试,确切地说不是单元测试,而是ts-node这个工具。在默认状态下,ts-node不会受tsconfig中别名配置的影响,想要让ts-node配置别名,需要安装一个包:

npm i tsconfig-paths --save-dev

ts-node和mocha使用:

# ts-node使用
ts-node -r tsconfig-paths/register main.ts

其实node也可以使用tsconfig-paths/register识别别名,但是node命令行应用项目不建议使用,因为它依赖于node启动应用的命令添加参数。

另外提醒一句,不要因为觉得tsconfig要对单测文件生效,就把test目录配置到includes里面去,会导致tsc把单测文件也编译到交付目录里去。

lint

eslint的别名配置,是比较容易出错的。首先,你要安装一个包:

npm i eslint-import-resolver-alias --save-dev

这个包是一个配合eslint-plugin-import使用的resolver,用来resolve带别名的路径。

然后你的.eslintrc要添加相应的配置:

module

其中extensions是查找无后缀名文件时的后缀名列表。

webpack

webpack的别名配置使用resolve字段,写法如下:

config

这个配置很常用,一般不会出错。

值得注意的是与样式文件有关的别名,这里面有三种情况:

第一种是你在ts文件里面使用import加载css。这没什么可说的,跟import ts文件一样,使用上面的resolve字段就能解决。

第二种是你在css文件里面使用@import语句加载另一个css。由于按照css @import语法的规定,这里的路径会被当做相对路径,所以如果你打算让webpack的别名配置在这里生效,或者你想加载node_modules目录中的css,你得在路径前面加个波浪线“~”,webpack才会把这个css路径当做module去resolve,比如这样:

@
我最近试了一下,发现用比较新的webpack和css-loader其实不加波浪线也可以。我用的版本是:
css-loader: 4.2.2
webpack: 4.44.1

第三种情况是你在css文件里面使用别名加载图片等静态资源,比如这样:

.

这时候要使用css-loader自己的别名配置,才能支持这种写法。配置方法:

{
  

node运行时

如果你开发的是一个node命令行程序,你还需要让node在运行时识别你配置的别名,刚才说过tsconfig-paths具备这个功能,但是我不推荐使用,我推荐另一个包:

npm i module-alias --save

这个包通过直接import进项目,在运行时生效,读取package.json的别名配置。它改写了Module._resolveFilename,从而解决别名问题。

按照文档,把如下代码放入你的入口文件(就是package.json里面那个main字段指向的文件),就可以了:

require

但是实际用的时候,如果你的入口文件不在项目根目录(我比较习惯把入口文件也放到src里,编译完了在lib目录里),你得自己传入根目录的路径:

import 

module-alias的别名配置位于package.json中,语法如下:

{
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode 在标签的src引入别名路径_Typescript项目别名(alias)配置清单 的相关文章

  • elementUI中el-form-item中的label的样式修改方法

    示例 将el form表单的label测试字体样式改为红色
  • pytorch vgg16 猫狗识别

    第一次做猫狗识别的任务 遇到点问题记录一下 主要是数据集的问题 下载完猫狗数据集后 打开有两个文件夹分别是train和test 这两个文件夹中并没有子文件夹 直接将其导入 train dataset torchvision datasets
  • Putty配色方案

    在使用Putty默认配色方案时 使用vim打开文件 如果遇到折叠代码 其折叠提示看不见 折叠提示与背景色同色 均是黑色 容易造成文件是空的或文件不全等误解 本文就是为了解决该问题而修改配色方案 该配色方案来源于网路资料 亲测可以使用 引用网
  • Mac终端不管输入什么指令都显示No such file or directory?

    写了一个python文件 在Mac终端输入指令总是显示 python can t open file 这是我的文件名 Errno 2 No such file or directory 看了半天 发现是环境变量的事 bash profile
  • 网络面试题:HTTPS为什么可以保证安全,怎么加密的?

    网络面试题 HTTPS为什么可以保证安全 怎么加密的 https www bilibili com video BV1w4411m7GL from search seid 3199089843343135819 一 HTTPS是什么 HTT
  • LInkedList的模拟实现

    在之前的文章笔者介绍了链表的实现 无头单向非循环链表的实现 感兴趣的各位老铁可以点进来看看 https blog csdn net weixin 64308540 article details 128397961 spm 1001 201
  • Ubuntu安装java

    转自 https www cnblogs com ziyue7575 p 13898610 html java8 apt安装 参考 https www cnblogs com zzy1024 p 11406269 html 若是没有配置国内
  • Motion Library for Unity——(Rokoko)

    unity动画插件Motion library 介绍 unity中项目设置 步骤 介绍 Motion Library是Unity编辑器的一个插件 允许你在编辑器中搜索 预览和购买市场上的动作资产 rokoko官网 unity中项目设置 需要
  • RFID系统信号通信过程

    如图
  • React 函数组件与类组件属性默认值

    一 函数组件 方式一 使用 defaultProps 设置默认值 import React from react import PropTypes from prop types function Sub props return lt g
  • 正点原子STM32 H743完成RT Thread下的LAN8720 网卡驱动 LWIP跑起来

    目前RT官网对H743的支持力度还不理想 本想按照F407的搞定网卡的套路来搞定H743的网卡 因为phy也是LAN 8720 以为会很轻松 没想到却是一条遍布荆棘的路 好在已经有不少大佬做了不少工作 终于在巨人肩膀人完成了网卡的驱动 能p
  • leetcode 1491 去掉最低工资和最高工资后的工资平均值

    leetcode 1491 去掉最低工资和最高工资后的工资平均值 题目描述 给你一个整数数组 salary 数组里每个数都是 唯一 的 其中 salary i 是第 i 个员工的工资 请你返回去掉最低工资和最高工资以后 剩下员工工资的平均值
  • 模型评估标准常用指标

    一 分类指标 样本中存在两种两种标签 样本真实标签和模型预测标签 根据这两个标签可以得到一个混淆矩阵 每一行代表样本的真实类别 数据总数表示该类别的样本总数 每一列代表样本的预测类别 数据总数表示该类别的样本总数 分类模型的评价指标主要基于
  • GPT-4 剑指多模态,前有谷歌 PaLM-E,AI 格局要变?

    本文首发自 HyperAI超神经微信公众号 美东时间 3 月 14 日 OpenAI 重磅推出大型多模态模型 GPT 4 GPT 4 是 ChatGPT 和 Bing AI 聊天机器人背后的技术基础 OpenAI 称 GPT 4 能接受图像
  • IEEE PDF eXpress系统报错:TimesNewRoman PS-BoldMT, ItalicMT, PSM

    问题 IEEE PDF eXpress系统报错 Errors Font TimesNewRomanPS BoldMT TimesNewRomanPS ItalicMT TimesNewRomanPSMT is not embedded 13
  • Python2.7和Python3.6的和平相处,pip冲突的解决办法

    第一次写 有点紧张 呈上自己遇到的一系列问题 及解决办法 我一开始在windows10下面装了python3 6 1 由于需要用到python2 7 所以昨天按照网上的教程安装 1 下载python2 7 配置环境变量 可以在下载过程中进行
  • QT ‘XXX‘ was not declared in this scope

    QT XXX was not declared in this scope 1 未定义 解决办法 变量直接使用但没有定义 定义相应的函数或变量即可 2 字符错误 解决办法 看看字母或者括号是否写错了 3 超出作用域 解决办法 增加声明 扩大
  • malloc的实现原理

    在开发c或c 时 经常需要分配内存 如今常用的分配内存函数为malloc tcmalloc jemalloc 其中属于malloc使用最平常 因为属于c标准库函数 但是网上有有实验证明另外两个效率比malloc高 这篇文章主要还是分析mal
  • openWrt 安装管理界面luci中文包

    openWrt15安装管理界面luci中文包 如果刚刷的openwrt15没有中文界面 用ssh连接路由后用opkg安装 root bang bang tang opkg install luci i18n base zh cn Unkno

随机推荐

  • 关于自己对像Chat-GPT的反应速度感悟

    这几个月相信大家应该对ChatGPT都不陌生了吧 因为这个东西已经在各大社交媒体可以说是无限次曝光了 就连一些其他行业的 完全跟科技行业沾不上边的朋友们 都知道了 可想而知 这个是有多火了 而我之所以发表这个感悟 其实也是自己的一个反思吧
  • matlab画矩阵无向网络图,[转]矩阵生成无向网络图

    功能是将邻接矩阵或关联矩阵变为网络图 不过这里只能转换为无向图 有向图的箭头还需要在研究一下 似乎有annotation函数可以调用 函数名netplot 使用方法输入请help netplot 无返回值 函数只能处理无向图 作者 tian
  • 【Java编程】JavaSE基础总结(三):异常机制、泛型

    JavaSE基础总结 三 1 Java异常机制 1 1 异常 在理想的情况下 我们的程序会按照我们的思路去运行 按理说是不会出现问题的 但是 代码实际编写后并不一定是完美的 可能会有我们没有考虑到的情况 如果这些情况能够正常得到一个错误的结
  • 在C++中 ,什么时候用:: ?什么时候用. ?什么时候用->?

    在C 中 什么时候用 什么时候用 什么时候用 gt 在 C 中 和 gt 是三种不同的运算符 用于访问类 结构体 命名空间 指针等的成员 它们的使用场景如下 作用域解析运算符 用于访问命名空间的成员或静态成员 例如 假设有一个命名空间 My
  • 内核中时间相关的知识介绍

    1 内核要解决的时间相关问题 1 如何度量时间差 如何比较时间 2 如何获取当前时间 3 如何将操作延迟指定的一段时间 4 如何调度异步函数到指定的时间之后执行 2 度量时间差 2 1 内核度量时间的原理 1 Soc有时间相关的硬件 比如定
  • tar打包split分割分解拆分大包文件

    2010 01 26 12 47 http hi baidu com hovlj 1130 item fe21d8342e68aa86c3cf2928 tar打包split分割分解拆分大包文件 有时候远程下载tar包的时候 由于包太大 失去
  • 语法分析—自上而下分析

    1 美图 2 位置 语法分析器的功能 语法分析的任务是分析一个文法的句子结构 语法分析器的功能 按照文法的产生式 语言的语法规则 识别输入符号串是否为一个句子 合式程序 语法分析的方法 不行 看不懂 我太难了 不看了
  • Goldengate 12.2新特性-自描述的队列文件

    OGG12 2中最大的变化之一就是队列文件是自描述的 意思是不再担心以前版本中 表结构异构的情况 也不再需要defgen生成定义文件 以及不再使用assumeTargetDefs或SourceDefs参数 许多手工处理的步骤不再需要了 即使
  • 【C/C++】三目运算符的详细分析

    前言 C C 三目运算符是一种条件运算符 也被称为 三元运算符 或 条件运算符 它的语法结构为 condition true expression false expression 表示如果 condition 为真 则执行 true ex
  • 2023华为杯数学建模研赛A题B题C题D题E题F题思路代码成品分享

    2022华为杯将于9 22开赛 思路贴将于早上发布 粉丝可见 国一F奖3年数学建模经验团队 交流裙 735249423 下文是2022年研赛E的思路示例 E题思路 问题1 从机理分析的角度 建立不同放牧策略 放牧方式和放牧强度 对锡林郭勒草
  • .npmrc的作用

    npmrc 文件是用于配置 npm Node js 包管理器 行为的配置文件 通过在项目根目录下创建或编辑 npmrc 文件 你可以自定义 npm 的一些行为和设置 以满足你的项目需求 这个文件通常包含一些键值对 每一对都对应着一个配置项
  • 非中心卡方分布

    非中心卡方分布 非中心卡方分布是卡方分布的一般化形式 如果 是 个独立的正态分布的随机变量均值为 方差为 表示为 那么随机变量 为非中心卡方分布 非中心卡方分布涉及两个参数 表示自由度 即 的数目 是和随机变量 相关的参数 由以上参数所定义
  • spring框架基础篇一 ——Ioc控制反转,DI依赖注入

    因为spring框架设计内容比较多 因此博主分成三篇讲解spring框架 spring基础篇一 Ioc控制反转 DI依赖注入 整合junit spring基础篇二 AOP切面编程 JDBCTemplate spring基础篇三 事务管理 S
  • UiBot无法抓取Google Chrome元素和数据抓取工具无法使用的解决方案

    UiBot RPA抓取 Google Chrome 元素建议使用 Google Chrome 原版浏览器 不建议使用 二次修改的浏览器版本 以确保兼容性最佳 操作流程符合本教程 如果无法抓取 Google Chrome 浏览器元素 或数据抓
  • 校园二手交易小程序

    mysql数据库创建语句 create table t admin id int primary key auto increment comment 主键 username varchar 100 comment 超级管理员账号 pass
  • 从道法术三个层面理解区块链:术

    区块链对当下的大家来说 都还是盲人摸象的阶段 所以经常群里有各种争论 归结起来 都是有的摸到了大腿 有的摸到了耳朵 相互之间就难以说服对方 各自有各自的认知 笔者尝试从道法术这三个层面来解读下区块链 以便让大家有个更全面的了解 也知道自己的
  • Linux设备驱动-procfs

    在Linux中 procfs是进程文件系统 file system 的缩写 包含一个伪文件系统 启动时动态生成的文件系统 可用于内核层和用户层交互信息 这个文件系统通常被挂载到 proc 目录 由于 proc 不是一个真正的文件系统 它也就
  • 排序算法-----插入排序

    目录 前言 插入排序 原理图 代码实现 分析总结 二分法插入排序 代码实现 前言 嗨嗨 米娜桑 今天我们继续学习排序算法中的插入排序 激不激动 兴不兴奋呢 好了废话不多说 下面请看正文 插入排序 插入排序 一般也被称为直接插入排序 对于少量
  • SSHException: Incompatible ssh peer (no acceptable kex algorithm)

    使用公司维护助手 python开发 执行巡检 导入主机信息时 发现无法连接 报错信息如下 2015 12 22 15 41 12 983 15004 ERROR paramiko transport Exception Incompatib
  • vscode 在标签的src引入别名路径_Typescript项目别名(alias)配置清单

    综述 新手写Typescript项目 别名配置是经常出问题的环节 有的人遇到这种问题 如果一时半会儿解决不了 干脆就不用别名了 这显然是不合理的 本文给出一个Typescript项目各种环节的别名配置清单 如果遇到问题 可以对照着检查一下