如何解决如何阻止vscode typescript文件从不应导入的文件夹导入?
我们使用打字稿和Webpack。所有代码都在一个仓库中。该产品是一款游戏,因此需要共享状态和对象,因此它具有3个不同的主文件夹。
在后端和前端都使用共享代码。服务器代码绝对不能由共享或客户端导入,否则会带来安全风险。
我们以前不小心导入了服务器代码,这导致了安全问题,我们需要更改所有密钥。我们没有任何系统可以阻止这种情况再次发生。
一种方法是将服务器和客户端分为两个不同的项目,但这会花费很多时间,并且会增加太多的复杂性。
另一种方法是运行一个脚本,该脚本检测服务器代码是否已导入到Shared或Client中。我可以使用python做到这一点,并在我们推送代码时使其运行。但是,通过VSCode的所有功能,我确定它们可能具有这种功能。也许npm有这样的库。
感谢您的帮助。
解决方法
如果您同时使用同时具有ESLint的a plugin for VS Code和cascading configurations,则可以同时使用restricted imports。自动完成功能仍会提示您导入,但至少它们会立即被标记为红色且模糊不清。
目录设置保持不变,只是添加了配置文件:
code
├ client
│ └ .eslintrc
├ server
│ └ .eslintrc
└ .eslintrc
此处的关键说明是,根.eslintrc
包含您的主要规则,其中子目录中的.eslintrc
文件可以将其扩展为show in this answer。您可以找到有关如何配置in the docs的更多信息。
这将允许您设置restricted imports,它同时支持基于路径的限制和基于模式的限制:
"no-restricted-imports": ["error",{
"paths": ["import1","import2"],"patterns": ["import1/private/*","import2/*","!import2/good"]
}]
然后您可以禁止在客户端和共享子目录中导入服务器代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。