Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

ESM default imports when using @scope

未關閉
#8,335 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
3/5
預估耗時
1-2 天
新手友好度
52/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
冷清
技術堆疊
javascript, ocaml
領域
compilers

研究方向

從連結的 Playground 範例開始,在使用 @scope 時比較為 Mod1 和 Mod2 產生的匯入。追蹤處理具 scope 的模組匯入的編譯器路徑,然後驗證受影響的 default-import 情況會保留 default imports,而不是發出 namespace imports。

由索引模型根據 Issue 內容生成。

描述

Playground: https://rescript-lang.org/try?version=v12.0.0-beta.12&module=esmodule&code=LYewJgrgNgpgBAWXARjgXjgbwFBzgFwE8AHefXOAAVElgAoAiG5BgSjhgA98YAnAOwCGUAgC4C6OAzAwAZoOj4GFSgGcY-MFVUBjEKUac2HbnyEjZ-cXXwAaOAEt++dmgB8cCPwf5JDS8p4sL6WkpY29gD6rNgAvtjYNNDwSGAATJI4eNTgyYw0acZqegaMMvKKDPYMRqzsXDwCwnCW4k6+7p7eHVIBFMEt-GH8cdhAA

module Mod1 = {
  type t
  @module("mod1") external t: t = "default"
  @send @scope("x") external fn: (t, int) => unit = "fn"
  let fn = fn(t, _)
}

module Mod2 = {
  @module("mod2") @scope(("default", "x")) external fn: int => unit = "fn"
  let fn = fn
}

Using @scope results in a namespace import instead of a default import:

import Mod1 from "mod1";
import * as Mod2 from "mod2";

This shouldn't effect modern tree shakers, but I've noticed tooling, like linters, can be less effective.

主要語言
ReScript
星號
7.5k
分支
483
平均合併
1 天 4 小時
30 天內合併 PR
127

環境準備

在 Codespaces 中開啟

在瀏覽器裡用你自己的 GitHub 帳號啟動這個專案的開發容器。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

rescript-lang/rescript 的其他 Issue

查看 rescript-lang/rescript 的全部 Issue

相似的 Issue

更多 Compilers Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。