Skip to content

Comments

fix: add warnings for import.meta.dirname/filename/url in UMD and IIFE formats#6747

Merged
sapphi-red merged 6 commits intomainfrom
copilot/add-warning-for-import-meta
Oct 29, 2025
Merged

fix: add warnings for import.meta.dirname/filename/url in UMD and IIFE formats#6747
sapphi-red merged 6 commits intomainfrom
copilot/add-warning-for-import-meta

Conversation

Copy link
Contributor

Copilot AI commented Oct 29, 2025

  • Explore repository structure and understand the codebase
  • Identify where import.meta warnings are emitted in crates/rolldown/src/ast_scanner/impl_visit.rs
  • Understand how import.meta.url, import.meta.dirname, and import.meta.filename are polyfilled in crates/rolldown/src/module_finalizers/mod.rs
  • Identify that polyfills only work for Node.js CJS format, not for UMD/IIFE formats
  • Build the project successfully
  • Modify warning logic to emit warnings for import.meta.url, import.meta.dirname, and import.meta.filename in UMD and IIFE formats
  • Create tests for IIFE and UMD formats with the new warnings
  • Run tests to validate the changes - all tests passed
  • Fix formatting issues found by linter
  • Code review completed with no issues found
  • Merge separate test directories into single test with configVariants per feedback

Summary

refs #3301

This PR adds warnings for import.meta.dirname, import.meta.filename, and import.meta.url when using UMD or IIFE output formats. These properties are only polyfilled in Node.js CJS format, so warnings are now properly emitted when they're used in formats where they will be empty objects.

Tests now use configVariants to test all three formats (CJS, IIFE, UMD) in a single test directory.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@graphite-app
Copy link
Contributor

graphite-app bot commented Oct 29, 2025

How to use the Graphite Merge Queue

Add the label graphite: merge to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

@netlify
Copy link

netlify bot commented Oct 29, 2025

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit f447552
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69022316f9820b00081b46d1

Copilot AI changed the title [WIP] Add warning for import.meta.dirname, import.meta.filename, and import.meta.url Add warnings for import.meta.dirname/filename/url in UMD and IIFE formats Oct 29, 2025
Copilot AI requested a review from sapphi-red October 29, 2025 13:44
@sapphi-red
Copy link
Member

@copilot use configVariants to merge the test to crates/rolldown/tests/rolldown/warnings/empty_import_meta

Copy link
Contributor Author

Copilot AI commented Oct 29, 2025

@copilot use configVariants to merge the test to crates/rolldown/tests/rolldown/warnings/empty_import_meta

Done in 00a05f0. The tests are now merged into a single directory using configVariants to test CJS (base), IIFE, and UMD formats. Also added missing test for import.meta.dirname.

Signed-off-by: 翠 <[email protected]>
@sapphi-red sapphi-red changed the title Add warnings for import.meta.dirname/filename/url in UMD and IIFE formats fix: add warnings for import.meta.dirname/filename/url in UMD and IIFE formats Oct 29, 2025
Signed-off-by: 翠 <[email protected]>
@sapphi-red sapphi-red marked this pull request as ready for review October 29, 2025 14:26
@sapphi-red sapphi-red enabled auto-merge (squash) October 29, 2025 14:27
@github-actions
Copy link
Contributor

Benchmarks Rust

  • target: main(ec4cadb)
  • pr: copilot/add-warning-for-import-meta(f447552)
group                                                        pr                                     target
-----                                                        --                                     ------
bundle/bundle@multi-duplicated-top-level-symbol              1.00     70.5±3.12ms        ? ?/sec    1.03     72.8±2.26ms        ? ?/sec
bundle/bundle@multi-duplicated-top-level-symbol-sourcemap    1.00     79.7±2.76ms        ? ?/sec    1.00     79.4±2.78ms        ? ?/sec
bundle/bundle@rome_ts                                        1.00    112.0±3.07ms        ? ?/sec    1.00    112.3±2.55ms        ? ?/sec
bundle/bundle@rome_ts-sourcemap                              1.00    123.3±2.11ms        ? ?/sec    1.04    128.0±2.11ms        ? ?/sec
bundle/bundle@threejs                                        1.02     43.0±2.94ms        ? ?/sec    1.00     42.1±0.71ms        ? ?/sec
bundle/bundle@threejs-sourcemap                              1.00     45.8±1.18ms        ? ?/sec    1.00     45.8±1.18ms        ? ?/sec
bundle/bundle@threejs10x                                     1.00    416.5±7.61ms        ? ?/sec    1.00    414.8±6.91ms        ? ?/sec
bundle/bundle@threejs10x-sourcemap                           1.00    470.1±8.34ms        ? ?/sec    1.02    478.9±6.47ms        ? ?/sec
scan/scan@rome_ts                                            1.00     89.8±1.97ms        ? ?/sec    1.03     92.8±2.85ms        ? ?/sec
scan/scan@threejs                                            1.00     30.7±1.93ms        ? ?/sec    1.01     30.9±1.90ms        ? ?/sec
scan/scan@threejs10x                                         1.00    315.7±4.67ms        ? ?/sec    1.00    314.5±4.58ms        ? ?/sec

@sapphi-red sapphi-red merged commit 1feacc0 into main Oct 29, 2025
28 checks passed
@sapphi-red sapphi-red deleted the copilot/add-warning-for-import-meta branch October 29, 2025 15:24
Copilot AI added a commit that referenced this pull request Oct 30, 2025
…E formats (#6747)

- [x] Explore repository structure and understand the codebase
- [x] Identify where `import.meta` warnings are emitted in
`crates/rolldown/src/ast_scanner/impl_visit.rs`
- [x] Understand how `import.meta.url`, `import.meta.dirname`, and
`import.meta.filename` are polyfilled in
`crates/rolldown/src/module_finalizers/mod.rs`
- [x] Identify that polyfills only work for Node.js CJS format, not for
UMD/IIFE formats
- [x] Build the project successfully
- [x] Modify warning logic to emit warnings for `import.meta.url`,
`import.meta.dirname`, and `import.meta.filename` in UMD and IIFE
formats
- [x] Create tests for IIFE and UMD formats with the new warnings
- [x] Run tests to validate the changes - all tests passed
- [x] Fix formatting issues found by linter
- [x] Code review completed with no issues found
- [x] Merge separate test directories into single test with
configVariants per feedback

## Summary

refs #3301

This PR adds warnings for `import.meta.dirname`, `import.meta.filename`,
and `import.meta.url` when using UMD or IIFE output formats. These
properties are only polyfilled in Node.js CJS format, so warnings are
now properly emitted when they're used in formats where they will be
empty objects.

Tests now use `configVariants` to test all three formats (CJS, IIFE,
UMD) in a single test directory.

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Signed-off-by: 翠 <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: sapphi-red <[email protected]>
Co-authored-by: 翠 <[email protected]>
@github-actions github-actions bot mentioned this pull request Nov 3, 2025
shulaoda added a commit that referenced this pull request Nov 3, 2025
## [1.0.0-beta.46] - 2025-11-03

### 💥 BREAKING CHANGES

- default `preserveEntrySignatures` to `'exports-only'` to align with
Rollup (#6723) by @Copilot

### 🚀 Features

- link to docs for commonjs prefer_builtin_feature diagnostic (#6793) by
@sapphi-red
- rolldown_plugin_build_import_analysis: align partial logic (#6789) by
@shulaoda
- improve `EVAL` warning message (#6776) by @sapphi-red
- rolldown: oxc v0.96.0 (#6774) by @Boshen
- rolldown_plugin_build_import_analysis: align partial logic (#6773) by
@shulaoda
- skip `__toESM` when not needed to reduce output size (#6751) by
@Copilot
- improve `EMPTY_IMPORT_META` warning message (#6761) by @sapphi-red
- rolldown_plugin_build_import_analysis: align no preload logic (#6762)
by @shulaoda
- rolldown_plugin_vite_css_post: align `RemovedPureCSSFilesCache` logic
(#6745) by @shulaoda
- rolldown_plugin_build_import_analysis: initialize `generateBundle`
logic (#6744) by @shulaoda
- experimental: introduce `freeExternalMemory` to free external memory
immediately (#6721) by @hyf0

### 🐛 Bug Fixes

- plugins: wrap replacePlugin with makeBuiltinPluginCallable (#6782) by
@huang-julien
- debug: make sure `this.resolve` is also tracked under corresponding
session (#6798) by @hyf0
- legal comments above directives are not preserved (#6787) by @shulaoda
- panic when rendering exports to other chunks (#6765) by @Copilot
- transform/inject: escape special characters in import source (#6778)
by @Copilot
- handle default exports from CJS modules correctly (#6767) by
@IWANABETHATGUY
- rolldown_plugin_build_import_analysis: correct aligned logic (#6768)
by @shulaoda
- duplicate default export when using both import and require (#6764) by
@Copilot
- handle arbitrary module namespace identifiers in
`preserveEntrySignatures: 'allow-extension'` (#6753) by @Copilot
- TypeError when loading CJS files after bundling mixed CJS+TS project
(#6743) by @IWANABETHATGUY
- add warnings for import.meta.dirname/filename/url in UMD and IIFE
formats (#6747) by @Copilot
- rolldown_plugin_manifest: should keep `names` field (#6742) by
@shulaoda
- legal comments above import statements are not preserved (#6717) by
@shulaoda
- remove redundant node check in dynamic entry graph construction
(#6730) by @IWANABETHATGUY

### 🚜 Refactor

- remove unnecessary `#[napi(gettter)]`, use function call directly
(#6694) by @hyf0
- explain the reason if memory doesn't get dropped by
`freeExternalMemory` (#6781) by @hyf0
- pre compute exports (#6755) by @IWANABETHATGUY
- dev: receive an interface for DevRuntime rather than WebSocket
directly (#6734) by @sapphi-red
- dev: fix types for the runtime file and expose it properly (#6731) by
@sapphi-red

### 📚 Documentation

- fix magicstring credit (#6812) by @TheAlexLichter
- in-depth/bundling-cjs: wrap some sections with caveats section (#6796)
by @sapphi-red
- in-depth/bundling-cjs: add "Ambiguous `default` import from CJS
modules" section (#6795) by @sapphi-red
- in-depth/bundling-cjs: make `esmExternalRequirePlugin` link more
prominent (#6792) by @sapphi-red
- add explanation about direct eval (#6775) by @sapphi-red
- add "Non-ESM Output Formats" page (#6760) by @sapphi-red
- use oxc for benchmark comparison in native magic string doc (#6740) by
@sapphi-red
- polish `cleanDir` option (#6741) by @hyf0
- fix image in native magic string doc (#6739) by @sapphi-red
- update description about `attachDebugInfo: 'none'` (#6738) by
@IWANABETHATGUY
- add warning about cleanDir behavior with multiple configs (#6735) by
@Copilot

### 🧪 Testing

- skip paths function test (#6771) by @IWANABETHATGUY
- rust/dev: add test about recover from initial build error (#6567) by
@hyf0

### ⚙️ Miscellaneous Tasks

- correct prepare release binding file (#6817) by @shulaoda
- deps: update github-actions (#6806) by @renovate[bot]
- deps: lock file maintenance npm packages (#6814) by @renovate[bot]
- use correct node version (#6809) by @shulaoda
- deps: lock file maintenance rust crates (#6815) by @renovate[bot]
- deps: update npm packages (major) (#6813) by @renovate[bot]
- deps: update dependency dprint-typescript to v0.95.12 (#6805) by
@renovate[bot]
- fix typo (#6801) by @iiio2
- fix typo in is_import_expr_ignored_by_comment method name (#6797) by
@sapphi-red
- deps: update crate-ci/typos action to v1.39.0 (#6794) by
@renovate[bot]
- deps: upgrade Rust to v1.91.0 and fix new clippy lints (#6785) by
@Copilot
- allow dprint to format `packages/rolldown/tests` except diagnostics
directory (#6772) by @Copilot
- deps: update dependency tsdown to v0.15.12 (#6759) by @renovate[bot]
- deps: update dependency rolldown-plugin-dts to v0.17.3 (#6758) by
@renovate[bot]
- test/dev: collect multiple build outputs for each step (#6736) by
@hyf0
- rolldown: change the NAPI-RS binding file to the cjs (#6688) by
@Brooooooklyn
- test: automatically run extra test with `preserve_entry_signatures:
'allow-extension'` (#6727) by @Copilot
- deps: update dependency rolldown-plugin-dts to v0.17.2 (#6732) by
@renovate[bot]
- fix node validation (#6728) by @shulaoda
- deps: lock file maintenance rust crates (#6636) by @renovate[bot]
- deps: update dependency tsdown to v0.15.11 (#6725) by @renovate[bot]

### ❤️ New Contributors

* @huang-julien made their first contribution in
[#6782](#6782)

Co-authored-by: shulaoda <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants