簡體   English   中英

VS Code JavaScript Intellisense 和 ES6 導入問題與 JS 的縮小版和非縮小版

[英]Problems with VS Code JavaScript Intellisense and ES6 Import with Minified & Non-minified Version of JS

下面是我的 Firebase 托管項目文件夾結構:

projectFolder/store/public/scripts/*.min.js
projectFolder/src/*.js

運行terser后,我所有的projectFolder/src/*.js都將縮小到projectFolder/store/public/scripts/*.min.js ,如下所示:

編輯:按照terser的要求,這是我的簡潔腳本的樣子:

call terser src/site-ui-components.js -o store/public/scripts/site-ui-components.min.js -c -m
echo site-ui-components.min.js: Done.
call terser src/login.js -o store/public/scripts/login.min.js -c -m
echo login.min.js: Done.
call terser src/register.js -o store/public/scripts/register.min.js -c -m
echo register.min.js: Done.
call terser src/profile.js -o store/public/scripts/profile.min.js -c -m
echo profile.min.js: Done.

在我的 ES6 導入中,我執行以下操作:

import { something1, something2 } from "/scripts/something.min.js";

這在運行時工作正常,但在開發期間我丟失了something1something2的所有 vs 代碼智能感知 如果我通過執行以下操作啟用智能感知,在運行時,我的代碼會中斷,因為很明顯,它找不到"./something.js"

import { something1, something2 } from "./something.js"; // Error, something.min.js not found

我不想通過將*.min.js添加到我所有的非縮小 js來做一些愚蠢的事情,只是為了讓它們都能工作。 其次,我盡量避免使用動態導入,通過編寫額外的代碼來適應不同的環境。

所以我的問題是:

  1. 如何在運行時不破壞我的代碼的情況下保持 ES6 導入的智能感知?
  2. 我的文件夾結構有問題嗎? 例如,不符合最佳/通用做法? 有什么推薦嗎?
  3. 我是否也可以將縮小和未縮小的 js 文件簡單地改為*.js

任何建議將不勝感激。 謝謝!

經過大量的搜索和閱讀,我終於設法在 VS Code 中使用baseUrljsconfig.jsonpaths來解決我的問題:

{
  "compilerOptions": {
    "baseUrl": ".",
     "paths": {
         "/scripts/*": ["./store/public/scripts/*"]
     }
  }
}

說明:

這里的目標是使以下導入對/src/*.js/store/public/scripts/*.min.js都有效,而不會丟失智能感知:

import { something1, something2 } from "/scripts/something.min.js";

對於我的情況,我的src中的 JS 是否引用/scripts/*.min.js並不重要,因為*.min.js總是從src的最新 object 接口獲取。 每當我更改src中的任何 JS 文件時,我只是運行我的terser腳本以使新的更改被智能感知反映出來,所以沒什么大不了的。 因此,為了讓/src/*.js/scripts/*.min.js從相同的源導入而不會在運行時破壞代碼,我可以配置我的jsconfig.json來實現這個目標:

"baseUrl": "."

"." 是我的projectFolder所在的jsconfig.json ,即projectFolder/jsconfig.json

"paths": {
   "/scripts/*": ["./store/public/scripts/*"]
}

"/scripts/*"是我用來引用導出模塊文件的字符串模式或導入路徑。 因此,當我import { something1 } from "/scripts/something.min.js" ,VS Code 始終引用"./store/public/scripts/*"作為智能感知。

我希望我的解釋對每個人都清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM