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

node_modules 应该加入版本控制吗

  •  
  •   zioc · 2017-05-24 14:45:29 +08:00 · 6798 次点击
    这是一个创建于 2739 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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