searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

前端项目路径别名终极解决方案

2024-07-15 09:44:34
3
0

关于路径别名

一个前端项目通常会演变成复杂的嵌套目录结构。因此,使用相对路径导入可能会变得更长且更混乱,这可能会对代码的外观产生负面影响,并让辨识代码的来源变得更加困难,更加重要的是代码文件位置变动相对路径就得改变。

使用路径别名即绝对路径导入,不仅解决了理解导入路径的问题,而且还简化了重构期间代码移动的过程,美丽且直观。

import { SearchForm } from "./../../src/components/searchForm";

// to this
import { SearchForm } from "@src/components/searchForm";

令人头疼的路径别名

路径别名固然是非常好,但是在项目中却需要在多处指定,即使你的项目足够简单,只要用了 TypeScript 本上也需要指定两次。

例如你使用 Webpack + TypeScript,你需要在** ebpack.config.js tsconfig.json中分别指定,如果你使用 Vite 也是要在 **vite.config.ts 中指定,多处指定就有可能漏写导致出错,当然我们可以通过 tsconfig-paths-webpack-plugin 和 vite-tsconfig-paths 分别来解决别名统一的问题。

但是现在我们有一种无需依赖第三方库即可配置路径别名的方法。此外,这种方法允许使用别名而不需要构建步骤,重要的是​一处指定,四处生效​。

原生路径别名

从 Node.js v12.19.0 开始,开发人员可以使用 Subpath Imports(https://nodejs.org/api/packages.html#subpath-imports) 在 npm 包中声明路径别名。这可以通过 package.json 文件中的 imports 字段来完成。不需要在 npm 上发布包。在任何目录中创建一个package.json 文件就足够了。因此,这种方法也适用于私人项目。

my-awesome-project
├── src/  
│ ├── components/  
│ │ └── searchForm/  
│ │ └── form/  
│ │ └── index.ts  
│ ├── pages/  
│ │ └── login/  
│ │ └── about/  
│ │ └── home/ 
│ └── mock/  
│ └── api/  
│ └── index.ts  
└── package.json
import { SearchForm } from "#src/components/searchForm";

别名从未如此简单。

这样设置的原生支持路径别名理论上有以下优点:

  • 无需安装任何第三方库。
  • 无需预先构建或动态处理导入即可运行代码。
  • 任何使用 ESM 标准导入且基于 Node.js 的工具都支持别名。
  • 代码导航和自动完成编辑器默认支持,而不需要任何额外的设置。

其他工具的支持情况

Webpack

Webpack从 v5.0 开始支持(https://github.com/webpack/webpack/releases/tag/v5.0.0-beta.31)导入字段。路径别名无需任何额外配置即可使用。

Vite

Vite 4.2.0 版本添加了(https://github.com/vitejs/vite/pull/7770)对导入字段的支持。

TypeScript

目前正在开发 https://github.com/microsoft/TypeScript/pull/55015 将要作为 5.3 版本的功能发布。

0条评论
作者已关闭评论
许****文
4文章数
0粉丝数
许****文
4 文章 | 0 粉丝
许****文
4文章数
0粉丝数
许****文
4 文章 | 0 粉丝

前端项目路径别名终极解决方案

2024-07-15 09:44:34
3
0

关于路径别名

一个前端项目通常会演变成复杂的嵌套目录结构。因此,使用相对路径导入可能会变得更长且更混乱,这可能会对代码的外观产生负面影响,并让辨识代码的来源变得更加困难,更加重要的是代码文件位置变动相对路径就得改变。

使用路径别名即绝对路径导入,不仅解决了理解导入路径的问题,而且还简化了重构期间代码移动的过程,美丽且直观。

import { SearchForm } from "./../../src/components/searchForm";

// to this
import { SearchForm } from "@src/components/searchForm";

令人头疼的路径别名

路径别名固然是非常好,但是在项目中却需要在多处指定,即使你的项目足够简单,只要用了 TypeScript 本上也需要指定两次。

例如你使用 Webpack + TypeScript,你需要在** ebpack.config.js tsconfig.json中分别指定,如果你使用 Vite 也是要在 **vite.config.ts 中指定,多处指定就有可能漏写导致出错,当然我们可以通过 tsconfig-paths-webpack-plugin 和 vite-tsconfig-paths 分别来解决别名统一的问题。

但是现在我们有一种无需依赖第三方库即可配置路径别名的方法。此外,这种方法允许使用别名而不需要构建步骤,重要的是​一处指定,四处生效​。

原生路径别名

从 Node.js v12.19.0 开始,开发人员可以使用 Subpath Imports(https://nodejs.org/api/packages.html#subpath-imports) 在 npm 包中声明路径别名。这可以通过 package.json 文件中的 imports 字段来完成。不需要在 npm 上发布包。在任何目录中创建一个package.json 文件就足够了。因此,这种方法也适用于私人项目。

my-awesome-project
├── src/  
│ ├── components/  
│ │ └── searchForm/  
│ │ └── form/  
│ │ └── index.ts  
│ ├── pages/  
│ │ └── login/  
│ │ └── about/  
│ │ └── home/ 
│ └── mock/  
│ └── api/  
│ └── index.ts  
└── package.json
import { SearchForm } from "#src/components/searchForm";

别名从未如此简单。

这样设置的原生支持路径别名理论上有以下优点:

  • 无需安装任何第三方库。
  • 无需预先构建或动态处理导入即可运行代码。
  • 任何使用 ESM 标准导入且基于 Node.js 的工具都支持别名。
  • 代码导航和自动完成编辑器默认支持,而不需要任何额外的设置。

其他工具的支持情况

Webpack

Webpack从 v5.0 开始支持(https://github.com/webpack/webpack/releases/tag/v5.0.0-beta.31)导入字段。路径别名无需任何额外配置即可使用。

Vite

Vite 4.2.0 版本添加了(https://github.com/vitejs/vite/pull/7770)对导入字段的支持。

TypeScript

目前正在开发 https://github.com/microsoft/TypeScript/pull/55015 将要作为 5.3 版本的功能发布。

文章来自个人专栏
vue
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0