如何确定我的流星项目中使用了哪些流星包

How to determine which meteor packages are being used in my meteor project

我有一个相当大的流星项目并安装了几个流星包。我这样做只是为了试用一个流星包,看看它是否适用于我的项目。不幸的是,在确定我不需要在我的项目中安装这些包后,我没有卸载这些包。要卸载我使用以下命令:

meteor remove <package-name>

现在我的 meteor 项目中有许多我可能没有使用的包。通过执行以下命令,我可以看到我正在使用的软件包列表:

meteor list

我如何确定我在 meteor 项目中安装的包是否真的在我正在处理的项目中使用?

这是一个很好的问题!据我所知,没有最佳实践——当然 meteor 本身也没有工具可以帮助解决这个问题,因此编写脚本是可行的方法。

为此,如果您严格要求总是导入您使用的东西,而不是依赖包导出的全局变量,那么这将起作用:

for n in $(cat .meteor/packages | grep ^[^#] | cut -d '@' -f 1 | xargs); do
  echo;
  echo $n;
  grep ^import.*meteor/$n -R server/ client/ imports/; # list all sub-folders here, but omit node_modules
done

这将为您提供如下列表:

packageName1:
somefile.js:import something from 'meteor/packageName1';
..

packageName2:

packageName3:
somefileElse.js:import something from 'meteor/packageName3';

因此,您将能够看到哪些包未在任何地方导入。

同样,这只是一个近似值(使用包的充分条件,但不是必要条件)。因此,仍然可以使用显示为空的包,但只能通过它们导出的全局变量,而不是新的 export/import 语义。