nodejs包依赖管理
鲜花总需要绿叶衬托的,对比php,java,python的包依赖管理,顿时觉得nodejs包依赖机制真是漂亮。此文不吐槽python的包管理是如何难用和混乱,也不去抨击php包管理的孱弱,仅仅讨论如何优雅地使用npm进行包依赖管理。 告别npm2.x,拥抱 npm3.x+升级到3.x执行以下命令: npm install -g npm@3 先上图
图中A和C都依赖了B,但是A依赖的是B v1.0,但是C依赖的是B v2.0,在npm2里面直接就是把B的分别放在A的node_modules文件夹里面,而npm3的处理方式是把B v1.0抽离出来作为一个单独的模块,而C所依赖的B v2.0则单独放到C中。
注意版本号的控制方式打开package.json这个文件,往往会看到dependencies中定义了一大堆的依赖,形式一般有以下几种:
上面的规则已经很清晰地表述了各种符号代表的意思。
注意从npm2升级到npm3需要删除旧的node_modules文件夹尽管npm3会兼容npm2,但是历史遗留问题往往让人防不胜防,最好的方式莫过于抹去旧的,放进新的。就譬如,昨天晚上留下了茶水,今天再把新泡的茶冲进去,味道也没有新茶好,甚至会拉肚子。 上面的文字已经阐述了npm2和npm3的机制,看起来是没有问题的,请注意C中引用Bv2,是把B v2放在C的node_modules文件夹中,新旧切换时就要考虑npm引用包的顺序,如果一个包下面有node_modules文件夹,npm会优先查找node_modules里面的包,然后再到外层,最后到全局。这是时候npm2的残留是那么顽固,因为它是把依赖放在自己node_modules文件夹下面的。对此,别无更好的办法,除非删掉,重新install。因此在发布和构建是一定要注意npm的版本,要考虑2到3切换时可能带来的风险。笔者已经吃过这方面的亏了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |