NPM技术问询:如何查找子包父包及AngularJS1.0栈安装警告处理
关于NPM依赖查找与AngularJS旧项目警告的解决方案
一、如何查找子包对应的父包?
要定位某个子包被哪个父包引入,NPM自带的工具就足够好用:
直接在项目根目录执行:
npm ls <子包名>比如你想找
bower的依赖来源,运行npm ls bower就行。输出里的缩进层级会清晰展示依赖链——子包上方缩进少一级的就是它的父包。举个例子:your-old-angular-project@1.0.0 /your/project/path └─┬ gulp-bower@0.0.13 └── bower@1.3.12这里
gulp-bower就是依赖bower的父包。如果依赖树太庞杂,加个
--depth=2参数可以限制显示层级,让结果更清爽;或者用--json输出JSON格式,方便你用脚本处理。
另外,第三方工具npm-why也很实用(先全局安装:npm install -g npm-why),它会直白告诉你包被安装的原因:
npm-why <子包名>
二、AngularJS 1.x项目处理npm install的过期包警告
你遇到的警告是因为bower和babel-preset-es2015已经被官方废弃了,针对旧项目的稳定性需求,给你两个适配方案:
1. 处理bower的废弃警告
Bower早就停止维护了,但如果你的项目暂时不想重构:
- 要是项目其实已经不用Bower了:直接删掉
package.json里的bower依赖,运行npm uninstall bower就能消掉警告。 - 要是还在靠Bower管前端资源:
建议慢慢把bower.json里的依赖移到package.json的dependencies里——现在NPM完全能搞定前端包管理。
然后把构建脚本里的bower install换成npm install,再删掉.bowerrc这类Bower专属配置。
注意:个别包在NPM上的名字可能和Bower不一样,迁移时要核对版本,别搞崩现有功能。
2. 处理babel-preset-es2015的废弃警告
babel-preset-es2015已经被babel-preset-env取代,后者会根据你指定的目标环境自动转译ES特性,比前者更灵活还在维护:
- 先装适配你Babel 6.x版本的替代包:
npm install babel-preset-env --save-dev - 然后改Babel配置(比如
.babelrc):
把原来的:
换成:{ "presets": ["es2015"] }{ "presets": ["env"] } - 要是需要兼容特定浏览器(比如AngularJS 1.x常要兼容IE9+),可以加目标配置:
这样既消了警告,又能保证旧项目的兼容性。{ "presets": [ ["env", { "targets": { "browsers": ["last 2 versions", "ie >= 9"] } }] ] }
内容的提问来源于stack exchange,提问作者Andre Lewis
相关产品推荐
相关产品推荐

