如何阻止 vscode 打字稿文件从不应该导入的文件夹中导入?

How to block vscode typescript file importing from a folder it should not?

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

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

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

一种方法是将服务器和客户端分成两个不同的项目,但这会花费很多时间并且会增加太多的复杂性。

另一种方法是运行 一个脚本来检测服务器代码是否已导入共享或客户端。我可以用 python 做到这一点,并在我们推送代码时使它成为 运行 。但是有了 VSCode 的所有功能,我敢肯定他们可能有这样的东西。或者 npm 有这样的库。

感谢任何帮助。

如果你使用ESLint, which has a plugin for VS Code as well, you can use cascading configurations along with restricted imports。自动完成仍会建议导入,但至少它们会立即被标记为红色和波浪形。

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

code
├ client
│ └ .eslintrc
├ server
│ └ .eslintrc
└ .eslintrc

这里的重点是根 .eslintrc 包含您的主要规则,子目录中的 .eslintrc 文件可以将其扩展为显示 . You can find more information on how to configure that in the docs.

这将允许您设置支持 path-based 和 pattern-based 限制的 restricted imports

"no-restricted-imports": ["error", {
    "paths": ["import1", "import2"],
    "patterns": ["import1/private/*", "import2/*", "!import2/good"]
}]

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