使用以下babel.config.json檔案創建了一個 npm 包:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-syntax-jsx"
]
}
在另一個專案中匯入這個包時,我收到以下錯誤:
experimental syntax 'jsx' isn't currently enabled
我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
所以,
npm 包需要先編譯/轉譯,然后才能用作 npm 包。為什么?因為 jsx 和 Typescript 都需要將構建工具轉換為 NodeJS 中的可運行代碼,并且 npm 包應該沒有對此類工具的假設。使用 Babel 或
tsc將源檔案轉譯到out專案中的輸出檔案夾中。您也可以使用 Webpack 轉譯和捆綁您的包,即使通常源不捆綁在一個包中,因為它妨礙了 tree-shake 的可能性。注意你是否希望 npm 包提供 esm (ES, es6) 或 cjs (CommonJS) 模塊,以及是否要包含型別。cjs 是更傳統的方法,而 esm 是較新的方法。如果您到目前為止不知道自己在做什么,請使用 cjs 開始,因為 esm 可能更難以使用。您也可以在包裝中提供這兩種變體。
tsc在 Babel和 Webpack的檔案中閱讀有關此程序的資訊,但您必須運行babel、tsc或webpack命令來獲取轉譯檔案。編輯:可以將 jsx 和 Typescript 保存在 npm 包中,但這絕對不是通常的做法。例如,使用
ts-loader(通常用于處理 Webpack 中的 Typescript 檔案)有設定allowTsInNodeModules. 然而,它似乎需要更多的配置,而且這種策略有什么優勢還不清楚。package.json在out檔案夾中添加一個。通常我們package.json在專案中使用來確定要為我們的專案下載什么等等,但是在 npm 包的根目錄中也應該有一個package.json. 這個檔案決定了你的包有什么依賴關系,還有它是什么型別的包,它的入口點,它是否有型別等等:https ://docs.npmjs.com/cli/v8/configuring-npm/package-json您現在在
out檔案夾中有一個 npm 包。要么將其發布到 npm 注冊表(最常見且默認為,npmjs.org但也存在其他私有和公共)或使用 npm 將其本地熱鏈接到另一個專案:https ://docs.npmjs.com/cli/v8/命令/npm-link
您現在已經邁出了構建包的第一步。一旦你進入不同型別的模塊、tree-shaking 和 npm 內部作業,這是一個很大且相當復雜的主題,所以要有耐心,一次只做一件事。
PS!該out檔案夾也可以命名為其他名稱;)DS
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/411277.html
標籤:
