Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

`vp` doesn't resolve `vite.config.ts` with `--conditions` flag

Open
#2,576 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
67/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
bun, node.js, typescript

Research direction

Use the linked reproduction and run bun run lint before and after bun run build; the failing entry point is vp lint with NODE_OPTIONS=--conditions=dev. Trace config loading and package resolution from vite.config.ts, then verify that the dev export condition resolves the TypeScript source without requiring dist/ and that lint completes successfully.

Written by the indexing model from the issue text.

Description

bug
Describe the bug

I am doing

A package whose exports map has a dev condition pointing at TypeScript sources, and whose vite.config.ts imports the package by its own name (@scope/thing/rules). Running vp lint with the condition passed via NODE_OPTIONS=--conditions=dev, since vp has no --conditions flag of its own.

What I expect

vp resolves @scope/thing/rules through the dev condition to ./src/rules.ts, so the config loads from sources. Node resolves it that way with --conditions=dev, and tsc does with customConditions: ["dev"].

What is actually happening

The condition is ignored. Resolution falls through to default, ./dist/rules.js. With no dist/ built, that file doesn't exist, so the import is reported unresolved and marked external. Being external, it is then imported at runtime from node_modules/.vite-temp/, where Node's package scope lookup stops at the node_modules segment and the self-reference cannot resolve, so config loading fails outright.

It emits the following error
$ NODE_OPTIONS=--conditions=dev vp lint
vite.config.ts (1:361) [UNRESOLVED_IMPORT] Could not resolve '@scope/thing/rules' in vite.config.ts
   ╭─[ vite.config.ts:1:362 ]
   │
 1 │ const __vite_injected_original_dirname = "$PWD/vite-plus-dev-config";const __vite_injected_original_filename = "$PWD/vite-plus-dev-config/vite.config.ts";const __vite_injected_original_import_meta_url = "file://$PWD/vite-plus-dev-config/vite.config.ts";import rules from "@scope/thing/rules";
   │                                                                                                                                                                                                                                                                                                                                                                          ──────────┬─────────  
   │                                                                                                                                                                                                                                                                                                                                                                                    ╰─────────── Module not found, treating it as an external dependency
───╯

failed to load config from $PWD/vite-plus-dev-config/vite.config.ts
[Vite+] resolve universal vite config error: Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@scope/thing' imported from $PWD/vite-plus-dev-config/node_modules/.vite-temp/vite.config.ts.timestamp-1787978765772-966599996ab688.mjs
    at Object.getPackageJSONURL (node:internal/modules/package_json_reader:301:9)
    at packageResolve (node:internal/modules/esm/resolve:784:25)
    at moduleResolve (node:internal/modules/esm/resolve:873:18)
    at defaultResolve (node:internal/modules/esm/resolve:1006:11)
    at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
    at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
    at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
    at #resolve (node:internal/modules/esm/loader:690:17)
    at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
    at ModuleJob.syncLink (node:internal/modules/esm/module_job:277:33) {
  code: 'ERR_MODULE_NOT_FOUND'
}
error: Failed to resolve vite config: GenericFailure, Cannot find package '@scope/thing' imported from $PWD/vite-plus-dev-config/node_modules/.vite-temp/vite.config.ts.timestamp-1787978765772-966599996ab688.mjs
error: script "lint" exited with code 1

Running bun run build first makes dist/rules.js exist and vp lint passes, which shows resolution itself works and only the condition is missing.

Reproduction

https://github.com/ryansuhartanto/vite-plus-dev-config

Steps to reproduce
$ bun install
$ bun run lint # Fail
$ bun run build
$ bun run lint # Now succeed
System Info
Local vite-plus:
  vite-plus  v0.3.0

Tools:
  vite             v8.2.2
  rolldown         v1.2.5
  vitest           v4.1.11
  oxfmt            v0.64.0
  oxlint           v1.79.0
  oxlint-tsgolint  v7.0.2001
  tsdown           v0.22.14
Used Package Manager

bun

Logs

Validations
Dominant language
Rust
Stars
5.8k
Forks
263
Avg merge
1d 4h
Merged PRs (30d)
148

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from voidzero-dev/vite-plus

All issues in voidzero-dev/vite-plus

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.