Comments (5)
Hi! rollup-plugin-node-externals
author here.
I was not aware of this and the linked discussion until @chandu filed Septh/rollup-plugin-node-externals#30 which I fixed by not relying on buildStart
to initialize my variables. Simple enough.
However I do believe that this is a bug that should be fixed in Vitest because the order in which the hooks are called is clearly defined by Rollup's documentation and diverging from that order is wrong (and my plugin might not be the only one affected).
from vitest.
It looks like buildStart
is still called, but the issue is that resolveId
is called before buildStart
when you have enforce: "pre"
.
I also made a repro here:
https://github.com/hi-ogawa/reproductions/tree/main/vitest-5616-plugin-build-start
> vitest
@resolveId(pre) { source: 'vitest' }
@resolveId(pre) { source: 'vitest' }
@buildStart(pre)
@buildStart(normal)
DEV v1.5.1 /home/projects/wmaivylmj.github
...
I remembered someone mentioned that buildStart
is not working, but it looks like the same issue where resolveId
being getting called first:
from vitest.
This resolveId
seems to be the trigger, which is called during configureServer
and before buildStart
vitest/packages/vitest/src/node/core.ts
Line 110 in 597e0c2
Quick logging from plugin shows something like this:
@configureServer(pre)
@resolveId(pre) { source: 'vitest' }
@resolveId(pre) { source: 'vitest' }
@configureServer(normal)
@buildStart(pre)
@buildStart(normal)
@sagargurtu Can you explain what is your use case? The linked discussion mentioned rollup-plugin-node-externals
. I think this is technically what Vitest shouldn't do, but I'm not sure if there is a quick way around.
Depending on the use case, there might be a workaround on plugin side.
from vitest.
@hi-ogawa While I could potentially move my initialization code to config()
or the function that returns the plugin object, I agree with @Septh as many other existing plugins could break because of this issue.
from vitest.
Related Issues (20)
- Regression in v1.5.1: TypeError: Invalid value used as weak map key HOT 3
- Stack overflow caused by large output HOT 2
- 1.5.1 Throws Unhandled Rejections TypeErrors in coverage-instanbul - 1.4.0 works fine HOT 5
- 1.5.1 TypeError: WeakMap key null must be an object or an unregistered symbol HOT 1
- Object Properties are ignored in expect when there is a Symbol.iterator HOT 6
- vite-node should have different behavior with env vars than vite HOT 1
- TypeError: Cannot redefine property after upgrading to v1.5.0 HOT 2
- Function calls that doesn't match signatures result in test success HOT 4
- Exclude {test,spec}-d files from coverage by default HOT 4
- Docs: mocks cheatsheet hard to read
- Mocking dependencies of pnpm monorepo packages doesn't work as expected HOT 2
- Only setting `CI=1` prints the stdout HOT 4
- Document how to mock a class, an instance, a method in a class HOT 2
- Coverage of types files can end up with a fatal error: `Cannot read properties of undefined (reading 'endCol')` HOT 2
- Virtual modules in lib mode no longer work HOT 6
- vitest --ui fails to run on Windows 11 ARM64 HOT 2
- Add a reason parameter in expect HOT 1
- Mocking changes returned promises HOT 3
- Add "file" attribute to vitest JUnit reporter test case XML elements HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vitest.