zioc
V2EX  ›  Node.js

node_modules 应该加入版本控制吗

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

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

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

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

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

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

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

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