如何阻止从不应从文件夹导入的 vscode typescript 文件?

dem*_*lus 6 npm typescript webpack visual-studio-code vscode-settings

我们使用打字稿和 webpack。所有代码都在一个仓库中。该产品是一个游戏,因此需要共享状态和对象,因此它有 3 个不同的主文件夹。

共享代码用于后端和前端。服务器代码不应由共享或客户端导入,否则会产生安全风险。

我们之前不小心导入了服务器代码,这导致了我们需要更改所有密钥的安全问题。我们没有建立任何系统来防止这种情况再次发生。

一种方法是将服务器和客户端分解为 2 个不同的项目,但这会花费大量时间并过多地增加复杂性。

另一种方法是运行一个脚本来检测服务器代码是否已导入到 Shared 或 Client。我可以用 python 来做,并在我们推送代码时让它运行。但是有了 VSCode 的所有功能,我相信他们可能有这样的东西。或者 npm 有这样的库。

任何帮助表示赞赏。

在此处输入图片说明

Nit*_*Nit 6

如果您使用ESLint (它也有VS Code 插件) ,您可以使用级联配置受限导入。自动完成仍然会建议导入,但至少它们会立即被标记为红色和波浪形。

\n

目录设置保持不变,但添加了配置文件:

\n
code\n\xe2\x94\x9c client\n\xe2\x94\x82 \xe2\x94\x94 .eslintrc\n\xe2\x94\x9c server\n\xe2\x94\x82 \xe2\x94\x94 .eslintrc\n\xe2\x94\x94 .eslintrc\n
Run Code Online (Sandbox Code Playgroud)\n

这里的关键说明是根目录.eslintrc包含您的主要规则,而.eslintrc子目录中的文件可以扩展它,如本答案所示。您可以在文档中找到有关如何配置它的更多信息。

\n

这将允许您设置支持基于路径和基于模式的限制的受限导入:

\n
code\n\xe2\x94\x9c client\n\xe2\x94\x82 \xe2\x94\x94 .eslintrc\n\xe2\x94\x9c server\n\xe2\x94\x82 \xe2\x94\x94 .eslintrc\n\xe2\x94\x94 .eslintrc\n
Run Code Online (Sandbox Code Playgroud)\n

然后,您可以禁止在客户端和共享子目录中导入服务器代码。

\n