美文网首页
axios到底是装在devDependencies中还是装在de

axios到底是装在devDependencies中还是装在de

作者: nick5683 | 来源:发表于2022-06-30 09:00 被阅读0次

    最近开始学习Vue,在github上axios的官方安装是:

    npm install axios
    

    默认安装在dependencies中了,但是还有一个devDependencies文件夹,好像是开发环境依赖,所以想知道他俩的区别。

    主要区别:

    除了字面的含义的区别,dependencies和devDependencies的区别还在于:

    如果你的项目是发布到npm的一个包,
    那么这个包的package.json中的dependencies中的依赖是会被下载下来到这个包的node_modules文件夹中的(如果你的项目本身没有这个依赖),而devDependencies不会。

    举个例子:
    我发布了一个组件A,它有dependencies:lodash和devDependencies:moment。
    那么,如果你的项目npm install 了组件A,除非你的项目也依赖了lodash并且版本一致,
    那么项目的node_modules/A下会有一个node_modules,里面会有lodash。
    而 moment,则无论如何也不会出现在你的项目中。

    至于一般的项目,不管你是安装在dev还是dependencies中,安装的时候都会安装,打包的时候都会被打进去的,区分依赖只是为了让项目看起来更加清晰。

    下面是解释:

    对于vue,react这样的需要编译的项目,只要import了,webpack就会去你的项目的node_modules找,没找到就去上一层找,一直找,一直找到全局安装的,也没找到,就报错。
    npm包之所以要区分dependencies和dev,是因为:
    对于vue和react这一类的前端框架而言,大部分都是引用npm包中编译后的代码(min.js),所以不再需要那些依赖了,大多都会放在dev中,方便开发时用到。
    而对于一些特殊的包以及一些给node用的npm包而言,它们可能只是去调用了第三方的包。
    比如: 我有一个包A,提供了一个time方法,但是实际上我就是去调用了moment的方法。而我又不能保证你的项目也用到了moment,所以我把moment放在A的dependencies中,这样不论何种情况的都能保证调用不会出错了。

    附:原文地址

    相关文章

      网友评论

          本文标题:axios到底是装在devDependencies中还是装在de

          本文链接:https://www.haomeiwen.com/subject/nohfbrtx.html