我继承了一个角度应用,可以在阳光下导入所有东西,导致vendor.bundle.js为8mb。
是否有实用工具让我知道哪些模块未使用,可以安全删除?
或者AOT是否照顾到了这一点?
另外,如果没有与之相关的导入,是否需要删除node_modules文件夹?或者是否将它留在那里并不会有害因因为AOT不会接受它?
答案 0 :(得分:4)
据我所知,AOT只删除未使用或导入NgModule
的代码。并且未在任何地方导入的代码(包括node_modules)都不会包含在捆绑包中。您可以通过多种方式找到未使用过的代码。
使用--noUnusedLocals
compiler option将导致未使用的导入和局部变量抛出打字稿错误。其中大部分应该已经由AOT处理,但您有可能找到AOT认为可能需要的未使用的导入。
探索捆绑包有助于查看哪些文件占用的最大值。它不会向您显示哪些依赖项触发了它们的导入,但它会帮助您确定优先级。
--sourcemaps
和--stats-json
标记添加到ng build
。webpack-bundle-analyzer
阅读dist/stats.json
文件以查看捆绑包中的内容虽然这是寻找未使用代码的最不自动化的方式,但默认情况下,Angular编译器可以很好地检查以确保在运行应用程序之前捆绑包中包含所需的组件。因此,如果您已对文件进行了搜索并且未考虑使用某个模块,请尝试删除导入,然后查看CLI是否会引发编译错误。