V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
px1981
V2EX  ›  Node.js

为什么 npm install 执行后依赖包都跑到外面来了

  •  
  •   px1981 · 2015-12-02 17:48:02 +08:00 · 4729 次点击
    这是一个创建于 3278 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 npm install url
    安装完成后, url 目录下没有 node_modules 子目录
    原本应该出现在 node_modules 下的依赖模块跑到了 url 目录同一级目录里
    10 条回复    2015-12-02 23:31:04 +08:00
    px1981
        1
    px1981  
    OP
       2015-12-02 17:49:33 +08:00
    而且 url 的 package.json 也发生了变化
    for8ever
        2
    for8ever  
       2015-12-02 17:51:14 +08:00
    我安装 url 没有出现你说的情况
    px1981
        3
    px1981  
    OP
       2015-12-02 17:54:23 +08:00
    @for8ever 你的 node 和 npm 是什么版本,我的是 5.1.0 和 3.3.12 ,找了三台机器都有这个问题
    guchengf
        4
    guchengf  
       2015-12-02 17:55:47 +08:00
    npm 3 之后,所有 npm 模块改为平级
    这样可以防止重复安装依赖包
    px1981
        5
    px1981  
    OP
       2015-12-02 17:58:03 +08:00
    @guchengf 可这样怎么依赖指定的版本呢
    dofy
        6
    dofy  
       2015-12-02 18:05:12 +08:00
    npm 3.0.0 修改了依赖包的安装位置。

    参考: https://github.com/npm/npm/releases/tag/v3.0.0

    搜 Flat
    for8ever
        7
    for8ever  
       2015-12-02 18:26:53 +08:00
    原来如此。。。
    guchengf
        8
    guchengf  
       2015-12-02 19:15:03 +08:00
    @px1981 根据实际情况来看,如果说某个模块的依赖与公共版本不一致,还是一样会在它的目录下建一个 node_modules 用来存放它的私有依赖版本
    px1981
        9
    px1981  
    OP
       2015-12-02 23:08:44 +08:00
    @guchengf 谢谢,在官方文档中也看到了“ You'll only see modules nested underneath one another when two (or more) modules have conflicting dependencies. ”
    Wangxf
        10
    Wangxf  
       2015-12-02 23:31:04 +08:00
    所以每次安装一个模块, node_modules 下面一大坨
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1122 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.