V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zioc
V2EX  ›  Node.js

node_modules 应该加入版本控制吗

  •  
  •   zioc · May 24, 2017 · 7792 views
    This topic created in 3269 days ago, the information mentioned may be changed or developed.

    团队有 win 和 mac,会有冲突吗

    34 replies    2017-05-25 19:37:00 +08:00
    clippit
        1
    clippit  
       May 24, 2017
    原则上说不应该
    oneonesv
        2
    oneonesv  
       May 24, 2017
    加了要死的,那么多文件。。
    SourceMan
        3
    SourceMan  
       May 24, 2017
    。。。。为什么要加,这个完全不符合逻辑呀
    你统计下 node_modules,100-200M,几万个文件
    Troevil
        4
    Troevil  
       May 24, 2017
    这个目录不是相当于 java 的 jar 依赖嘛... 依赖当然不传, build 之前自己 install 啊
    hcwhan
        5
    hcwhan  
       May 24, 2017 via iPhone
    你可能是需要 npm skrinkwrap 搜索一下就知道了
    sutra
        6
    sutra  
       May 24, 2017
    不要。

    如果你想控制依赖的具体的版本可以用 yarn。
    54007
        7
    54007  
       May 24, 2017
    依赖管理应该只要 package.json 就行了
    juicy
        8
    juicy  
       May 24, 2017
    yarn lock, npm shrinkwrap
    Tonni
        9
    Tonni  
       May 24, 2017
    yarn 大法好
    hxsf
        10
    hxsf  
       May 24, 2017
    yarn.lock +1
    Perry
        11
    Perry  
       May 24, 2017
    package.json 里面的依赖写对就行
    coolcoffee
        12
    coolcoffee  
       May 24, 2017
    会冲突,最典型的就是 node-sass,它是先下载 c 语言源码,然后本地调用编译器进行编译的。别说不同系统,就是不同的 node 版本都要 rebuild 才行
    changwei
        13
    changwei  
       May 24, 2017 via Android
    package.json 加入版本控制就好,svn 或 git 去管理 package,package 再去管理 node_modules 就好。职责分明。
    slowgen
        14
    slowgen  
       May 24, 2017
    不把依赖加进版本库,当你们依赖的库再次出现了 left-pad 事件,或者库的作者帐号被盗,被植入了恶意代码,你们要如何处理?
    jellybool
        15
    jellybool  
       May 24, 2017 via iPhone
    yarn 大法好
    learnshare
        16
    learnshare  
       May 24, 2017
    no,Git 里文件只要自己的代码就好了,第三方的用的时候在线安装
    flashback313
        17
    flashback313  
       May 24, 2017
    yarn 大法好
    julyclyde
        18
    julyclyde  
       May 24, 2017
    别学 google 的 one source tree 邪教
    incompatible
        19
    incompatible  
       May 24, 2017
    @shuimugan 这种问题当然是通过 npm 私有仓库来解决了。
    metrue
        20
    metrue  
       May 24, 2017
    node_modules 为什么用加入版本控制,package.json 放进去不叫好了吗?
    lsyAndroid
        21
    lsyAndroid  
       May 24, 2017 via Android
    不应该,我记得 package.json 加上就行了
    frankynwa
        22
    frankynwa  
       May 24, 2017
    不用,存 package.json 就行了。

    然而我司居然把 node_modules 文件夹压缩之后加入版本控制了。

    刚做项目不久,领导周末打电话问我:"项目里面 xx 插件是谁加的?怎么没打入压缩包内?现在构建版本都报错了你说怎么办????"

    我说领导你 npm install 一下就行了......
    nextbox
        23
    nextbox  
       May 24, 2017
    不应该
    那么多文件。控制起来。是失控。。
    直接 package.json 就可以了啦。
    整个团队保持一样的 package.json 基本没啥问题的。
    Hilong
        24
    Hilong  
       May 24, 2017 via Android
    yarn.lock 正解
    billlee
        25
    billlee  
       May 24, 2017
    不要加入版本控制,但是一定要归档。否则哪天 npm 上的项目被删了。。
    orvice
        26
    orvice  
       May 24, 2017
    https://github.com/github/gitignore/blob/master/Node.gitignore
    参考 github 的.gitignore 模板

    是不加入版本控制的
    nino
        27
    nino  
       May 24, 2017
    其实有一种折衷的方法,我最近在使用,也是 facebook 内部很多项目的用法,就是把 npm 包压缩,然后 offline 安装。
    yarn 自带这个功能,可以参考这篇博客: https://yarnpkg.com/blog/2016/11/24/offline-mirror/
    nino
        28
    nino  
       May 24, 2017
    当你有 N 多环境需要 npm install,然后依赖又特别多的时候你们就知道痛苦了,开发环境,测试环境,CI 环境……
    万一有的环境没有网络那又怎么办?其实依赖也进版本控制并不是一件不可接受的事,golang 项目的 vendor 一般也是推荐放进版本控制的。
    sox
        29
    sox  
       May 24, 2017
    @billlee 现在已经不可能被删了
    spice630
        30
    spice630  
       May 25, 2017
    为什么这个板块儿颜色不一样~~
    polun
        31
    polun  
       May 25, 2017
    看场景吧。
    cxbig
        32
    cxbig  
       May 25, 2017
    我们的自动部署都是实时 install + run,目标文件生成以后还会把这个文件夹删掉。
    cxbig
        33
    cxbig  
       May 25, 2017
    补充上一条:我们只用于前端生成 JS 和 CSS。以 nodejs 为后端的项目是不是运行时依赖不太确定。
    sampeng
        34
    sampeng  
       May 25, 2017
    原则上不需要加,但是 require 必须写死版本号。如果你不想本地跑的好好的,上线发现洗洗睡了的话。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3328 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 101ms · UTC 11:32 · PVG 19:32 · LAX 04:32 · JFK 07:32
    ♥ Do have faith in what you're doing.