[英]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";
这在运行时工作正常,但在开发期间我丢失了something1
和something2
的所有 vs 代码智能感知。 如果我通过执行以下操作启用智能感知,在运行时,我的代码会中断,因为很明显,它找不到"./something.js"
:
import { something1, something2 } from "./something.js"; // Error, something.min.js not found
我不想通过将*.min.js
添加到我所有的非缩小 js来做一些愚蠢的事情,只是为了让它们都能工作。 其次,我尽量避免使用动态导入,通过编写额外的代码来适应不同的环境。
所以我的问题是:
*.js
?任何建议将不胜感激。 谢谢!
经过大量的搜索和阅读,我终于设法在 VS Code 中使用baseUrl
和jsconfig.json
的paths
来解决我的问题:
{
"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.