Vue.js 2构建时package.json的依赖是否会被打包到dist版本中?
依赖漏洞对线上dist版本的影响判定
核心判断逻辑依赖依赖的分类和实际打包行为:
- 归属于
dependencies字段的依赖:属于业务运行时需要调用的包,默认会被webpack等打包工具编译后打入dist产物,这类依赖的漏洞会直接影响已上线的dist版本 - 归属于
devDependencies字段的依赖:仅用于本地开发、代码校验、构建打包流程,不会被默认打包进dist产物,这类依赖的漏洞仅存在于源码/构建阶段,不会影响已上线的运行版本
例外提示:如果手动修改过打包配置强制引入devDependencies中的包、或者第三方包本身的导出配置存在错误,可能会出现devDependencies被打入产物的情况,因此不能仅靠字段分类作为唯一判断标准,建议结合实际打包分析做二次校验。
识别dist中实际包含的依赖的方法
Vue2生态下可以直接用以下内置能力实现,无需额外接入外部服务:
1. 打包可视化分析
Vue CLI官方内置了webpack-bundle-analyzer支持,直接运行对应命令即可:
- 旧版vue-cli 2.x项目:运行
npm run build --report - vue-cli 3.x及更高版本项目:运行
npx vue-cli-service build --report
构建完成后会自动生成可视化分析页面,所有被打包进产物的依赖及其体积占比都会清晰展示,直接对应漏洞依赖列表排查即可。
2. 利用SourceMap校验
如果你的项目打包时开启了SourceMap生成,可以直接用浏览器开发者工具打开线上页面,在「来源」面板的webpack:///node_modules路径下,就能看到所有被打入产物的第三方依赖。
3. 代码引用排查
对拿不准的单个依赖,可以全局搜索业务代码(排除build、config等构建配置目录)中是否存在import '包名'、require('包名')的引用逻辑,只要业务代码中存在主动引用,对应包大概率会被打包进dist。
内容的提问来源于stack exchange,提问作者MaxRocket
相关产品推荐
相关产品推荐

