为了重构客户端项目,我正在寻找一种安全的方法来查找(并删除)未使用的代码。在大型react项目中,您使用什么工具来查找未使用/死代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难。然而,我们会尽可能删除未使用的代码。还希望提出一般战略/技术(而不是具体工具)的建议。谢谢
ocebsuys1#
我在一个大型前端React项目(1100+ js文件)中工作,偶然发现了同样的问题:如何找出哪些文件不再使用?到目前为止,我已经测试了接下来的工具:
它们都没有真正起作用。原因之一是我们使用了“非标准”导入。除了import中的常规相对路径之外,我们还使用了webpack resolve特性 * 解析 * 的路径,这基本上允许我们使用整洁的import 'pages/something'而不是繁琐的import '../../../pages/something'。
import
import 'pages/something'
import '../../../pages/something'
感谢Liam O 'Boyle(elyobo)@GitHub,我终于找到了这个解决方案:https://github.com/MatthieuLemoine/unused-webpack-plugin这是一个网络包插件,所以它的工作只有当您的捆绑是网络包。我个人觉得它很好,你不需要单独运行它,而是它内置到您的建设过程中抛出警告时,有什么不好。我们的研究课题:https://github.com/spencermountain/unrequired/issues/6
vwoqyblh2#
unrequired和deadcode等库只支持遗留代码。为了找到未使用的资产,可以使用deadfile手动删除存储库:https://m-izadmehr.github.io/deadfile/
它可以简单地在任何JS项目中查找未使用的文件。无需任何配置,它支持ES6、React、JSX和Vue文件:
aemubtdh3#
首先,非常好的问题,在大型项目中,程序员通常会尝试许多行代码测试,并且在结果结束时,很难找到未使用的代码。有两种可能,必须为您工作-我通常这样做,每当我需要删除和减少未使用的代码到我的项目。
第一路WebStorm集成开发环境:
如果您正在使用web-storm IDE进行JS开发或React JS / React Native或Vue js等,它会用不同颜色或红色警告告诉我们,并指出我们在编辑器中未使用的代码但在您的特定场景中不起作用,还有另一种方法可以删除未使用的代码。
第二路不需要的库:(不支持JSX)
第二种方法是删除项目中未使用的代码,即不需要的库,您可以在此处访问:unrequired githubNPM和github here下的另一个名为depcheck的库只要按照他们适当的方法-如何使用他们,你会很容易地修复这个未使用的问题希望这对你有帮助
jmp7cifd4#
我认为对于一个create-react-app引导应用程序来说最简单的解决方案是使用ESLint。尝试使用各种webpack插件,但是每个插件都遇到了内存不足的问题。
使用no-unused-modules,它现在是eslint-plugin-import的一部分。
设置eslint并安装eslint-plugin-import后,将以下内容添加到规则中:
"rules: { ...otherRules, "import/no-unused-modules": [1, {"unusedExports": true}] }
f1tvaqid5#
我的方法是大量使用ESlint,并在每次推送之前使其在IDE和AD上运行。它指出了未使用的变量、方法、导入等等。Webpack(它有很好的插件来检测死代码)注意避免捆绑未导入的代码。
fdbelqdn6#
使用findead,您可以找到项目中所有未使用的组件。只需安装并运行:
npm i -g findead
findead /path/to/search
j8ag8udp7#
这个问题让我想起,当您运行build命令时,react默认会从src中删除deadcode。
**注意:**仅当您希望将应用交付生产时,才需要运行构建命令。
cld4siwp8#
对于节点项目,请在项目根目录中运行以下命令:
npx unimported
如果您使用的是流类型注解,则需要添加--flow标志:
--flow
npx unimported --flow
源文档(& D):https://github.com/smeijer/unimported结局:
就像其他答案一样,我尝试了很多不同的库,但从未真正成功。我需要找到整个没有被使用的文件,而不仅仅是函数或变量。为此,我已经有了我的linter。我试过deadfile、unrequired、trucker,但都没有成功。找了一年多,只剩下一件事要做,那就是自己写点东西。unimported从您的入口点开始,并遵循所有import/require语句。将报告源文件夹中存在的所有未导入的代码文件。注意,目前它只扫描源文件。不扫描图像或其他资产。因为那些通常是以其他方式"导入"的(通过标签或通过css)。同样,它也会有假阳性。有时候我们写脚本是为了简化我们的开发过程,比如构建步骤。2这些脚本并不是直接导入的。另外,有时我们安装了对等依赖项,但我们的代码并不直接导入这些依赖项。这些依赖项会被报告。但是对我来说,unimported已经非常有用了,我已经从我的项目中删除了很多文件,所以它绝对值得一试。如果你有任何问题,请让我知道。trough github问题,或在twitter上联系我:https://twitter.com/meijer_s
deadfile
unrequired
trucker
unimported
8条答案
按热度按时间ocebsuys1#
Webpack的解决方案:UnusedWebpackPlugin
我在一个大型前端React项目(1100+ js文件)中工作,偶然发现了同样的问题:如何找出哪些文件不再使用?
到目前为止,我已经测试了接下来的工具:
它们都没有真正起作用。原因之一是我们使用了“非标准”导入。除了
import
中的常规相对路径之外,我们还使用了webpack resolve特性 * 解析 * 的路径,这基本上允许我们使用整洁的import 'pages/something'
而不是繁琐的import '../../../pages/something'
。未使用的Web包插件
感谢Liam O 'Boyle(elyobo)@GitHub,我终于找到了这个解决方案:https://github.com/MatthieuLemoine/unused-webpack-plugin
这是一个网络包插件,所以它的工作只有当您的捆绑是网络包。
我个人觉得它很好,你不需要单独运行它,而是它内置到您的建设过程中抛出警告时,有什么不好。
我们的研究课题:https://github.com/spencermountain/unrequired/issues/6
vwoqyblh2#
unrequired和deadcode等库只支持遗留代码。为了找到未使用的资产,可以使用deadfile手动删除
存储库:https://m-izadmehr.github.io/deadfile/
它可以简单地在任何JS项目中查找未使用的文件。
无需任何配置,它支持ES6、React、JSX和Vue文件:
aemubtdh3#
首先,非常好的问题,在大型项目中,程序员通常会尝试许多行代码测试,并且在结果结束时,很难找到未使用的代码。
有两种可能,必须为您工作-我通常这样做,每当我需要删除和减少未使用的代码到我的项目。
第一路WebStorm集成开发环境:
如果您正在使用web-storm IDE进行JS开发或React JS / React Native或Vue js等,它会用不同颜色或红色警告告诉我们,并指出我们在编辑器中未使用的代码
但在您的特定场景中不起作用,还有另一种方法可以删除未使用的代码。
第二路不需要的库:(不支持JSX)
第二种方法是删除项目中未使用的代码,即不需要的库,您可以在此处访问:unrequired github
NPM和github here下的另一个名为depcheck的库
只要按照他们适当的方法-如何使用他们,你会很容易地修复这个未使用的问题
希望这对你有帮助
jmp7cifd4#
我认为对于一个create-react-app引导应用程序来说最简单的解决方案是使用ESLint。尝试使用各种webpack插件,但是每个插件都遇到了内存不足的问题。
使用no-unused-modules,它现在是eslint-plugin-import的一部分。
设置eslint并安装eslint-plugin-import后,将以下内容添加到规则中:
f1tvaqid5#
我的方法是大量使用ESlint,并在每次推送之前使其在IDE和AD上运行。
它指出了未使用的变量、方法、导入等等。Webpack(它有很好的插件来检测死代码)注意避免捆绑未导入的代码。
fdbelqdn6#
发现死亡
使用findead,您可以找到项目中所有未使用的组件。只需安装并运行:
安装
用法
j8ag8udp7#
这个问题让我想起,当您运行build命令时,react默认会从src中删除deadcode。
**注意:**仅当您希望将应用交付生产时,才需要运行构建命令。
cld4siwp8#
溶液:
对于节点项目,请在项目根目录中运行以下命令:
如果您使用的是流类型注解,则需要添加
--flow
标志:源文档(& D):https://github.com/smeijer/unimported
结局:
背景
就像其他答案一样,我尝试了很多不同的库,但从未真正成功。
我需要找到整个没有被使用的文件,而不仅仅是函数或变量。为此,我已经有了我的linter。
我试过
deadfile
、unrequired
、trucker
,但都没有成功。找了一年多,只剩下一件事要做,那就是自己写点东西。
unimported
从您的入口点开始,并遵循所有import/require语句。将报告源文件夹中存在的所有未导入的代码文件。注意,目前它只扫描源文件。不扫描图像或其他资产。因为那些通常是以其他方式"导入"的(通过标签或通过css)。
同样,它也会有假阳性。有时候我们写脚本是为了简化我们的开发过程,比如构建步骤。2这些脚本并不是直接导入的。
另外,有时我们安装了对等依赖项,但我们的代码并不直接导入这些依赖项。这些依赖项会被报告。
但是对我来说,
unimported
已经非常有用了,我已经从我的项目中删除了很多文件,所以它绝对值得一试。如果你有任何问题,请让我知道。trough github问题,或在twitter上联系我:https://twitter.com/meijer_s