7 unstable releases
0.4.3 | Aug 22, 2023 |
---|---|
0.4.2 | Oct 17, 2022 |
0.3.0 | Oct 17, 2022 |
0.2.0 | Oct 15, 2022 |
0.1.0 | Oct 14, 2022 |
#13 in #resolve
27 downloads per month
46KB
1K
SLoC
ES Resolve
JavaScript/TypeScript module resolution in Rust
Installation
cargo add es_resolve
Get Started
use std::path::{Path, PathBuf};
use es_resolve::*;
// Provide an exact path to the file from which we resolve
let source = PathBuf::from("tests/fixtures/relative/js.js");
// Construct an `es_resolve::EsResolver`, then call `resolve` to get the result.
// Also check `es_resolve::EsResolverError` for a list of errors that might occur!
let target = EsResolver::new("./ts", &source, TargetEnv::Browser).resolve().unwrap();
let expected_target_path = Path::new("tests/fixtures/relative/ts.ts").canonicalize().unwrap();
let expected_target = expected_target_path.to_string_lossy();
// We expect to get the absolute path to the resolved target module!
assert_eq!(target, expected_target);
Features
General Features
Feature | Status | Since | Note |
---|---|---|---|
Relative Module Import | 👌 | 0.1.0 | import './App' when there is an ./App.ts ./App.tsx ./App.js etc. |
Non-relative Module Import | 👌 | 0.1.0 | import '@angular/core' . See also Package.json Supports. |
TypeScript Path Mapping | 👌 | 0.1.0 | import '@/App' when you define baseUrl and paths in a parent tsconfig.json . |
Node Built-in Modules | 👌 | 0.1.0 | Resolve node built-in modules like "http" as-is instead of throwing an error. |
Package.json Supports
Feature | Status | Since | Note |
---|---|---|---|
Main Fields | 👌 | 0.1.0 | Try fields like "main" , "browser" , "module" in package.json by default. |
Subpath Exports | 👌 | 0.1.0 | { "exports": { "import": "./index.mjs", "require": "./index.cjs" } } in package.json is gaining popularity. |
Subpath Imports | 👷 |
Dependencies
~1.8–3MB
~55K SLoC