首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用git子模块导致发布时npm包过大

的问题是在项目中使用了git子模块,并且将子模块的代码也打包进了npm包,导致最终发布的npm包体积过大的情况。

Git子模块是一种将一个Git仓库作为另一个Git仓库的子目录的方式。它允许在一个项目中引用另一个项目的特定版本,并且可以方便地更新和管理子模块的代码。然而,当使用git子模块时,如果将子模块的代码也打包进了npm包,就会导致npm包的体积增大。

解决这个问题的方法是在构建npm包时排除掉git子模块的代码。可以通过在项目的.npmignore文件中添加相应的规则来实现。.npmignore文件类似于.gitignore文件,用于指定在构建npm包时需要排除的文件或目录。在.npmignore文件中添加子模块的路径,可以确保在构建npm包时不会将子模块的代码包含进去。

另外,还可以使用npm的files字段来明确指定需要包含在npm包中的文件。通过在项目的package.json文件中的files字段中列出需要包含的文件或目录,可以控制最终发布的npm包中只包含指定的文件,而不包含子模块的代码。

总结起来,解决使用git子模块导致发布时npm包过大的问题的方法是:

  1. 在项目的.npmignore文件中添加子模块的路径,确保在构建npm包时不会将子模块的代码包含进去。
  2. 使用npm的files字段来明确指定需要包含在npm包中的文件,控制最终发布的npm包中只包含指定的文件,而不包含子模块的代码。

腾讯云相关产品推荐:

  • 云开发(CloudBase):腾讯云提供的一站式后端云服务,支持前后端一体化开发,无需搭建服务器和运维,可快速构建应用。
  • 云原生应用引擎(TKE):腾讯云提供的容器服务,支持快速部署和管理容器化应用,提供高可用、弹性伸缩的容器集群。
  • 云数据库MySQL版(TencentDB for MySQL):腾讯云提供的高性能、可扩展的云数据库服务,支持自动备份、容灾、监控等功能,适用于各类应用场景。

更多腾讯云产品信息和介绍,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端工程化 - 剖析npm的包管理机制(完整版)

npm命名规则 name 即模块名称,其命名需要遵循官方的一些规范和建议: 名会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url安全的字符在名中都不能使用,可以使用 validate-npm-package-name...如果你的名与现有的名太相近导致你不能发布这个,那么推荐将这个发布到你的作用域下。 例如:用户名 conard,那么作用域为 @conard,发布可以是@conard/react。...当然,引用 optionalDependencies 中安装的依赖,一定要做好异常处理,否则在模块获取不到时会导致报错。...当你的软件发布到了正式环境,或者有稳定的API,就可以发布1.0.0版本了。所以,当你决定对外部发布一个正式版本的npm,把它的版本标为1.0.0。...直到有依赖不在依赖其他模块

2.7K93

小程序工程化探索

如此多的 NPM 怎么管理呢,可以通过 lerna 进行统一维护、发布。 另外,跟随业界多端统一的步伐,NPM 需要具有多端复用的能力。 ?...第一个手段是依赖分析,通过工具在打包删掉未使用的文件、函数,释放空间。 另外一个手段是只能分包,打包按照算法动态调整 NPM 到主,临时调整分包大小。...具体实现可以参考这份代码,需要注意的是,一个函数没有被其他模块引用并不代表可以直接删除,还需要考虑模块内的引用情况,同时,写代码尽量避免副作用。 ? 依赖分析可以删除未使用的文件、函数,释放空间。...看图,左边第一个分包使用了 cookie 和 md5 两个,第二个分包则只使用了 cookie,通过算法配置,在编译可以选择将两个 NPM 都提到主,这时主大,分包小。...或者仅将共用的 cookie 提到主,md5 留在分包,这时主小,分包大。这样可以大幅度缓解发版或者分包超限导致延期的问题。 ?

1.9K61

微前端模块共享你真的懂了吗

,可能是一个工具库,有可能是一个组件库,然后讲其打包成为npm,然后在每个子应用中都安装该模块依赖,以此达到多个项目复用的效果 也就代表每个应用都有相同的npm,本质上没有真正意义上的实现模块共享和复用...,只是代码层次共享和复用了,应用打包构建,还是会将依赖一起打包 劣势有以下 几点: 每个微应用都会打包该模块导致依赖的冗余,没有真正意义上的共享复用 当npm进行更新发布了,微应用还需要重新构建...,调试麻烦且低效 (除非用npm link) 2.Git Submodule (子模块) 阿乐童鞋: 那如果我们没有搭建npm内网,又不想把模块开源出去,而且依赖npm,只要涉及变更需要重新发布,有没有其他方式可以解决以上问题呀...2.1 对比 npm 你可以试试 Git Submodule ,它提供了一种类似于npm package的依赖管理机制,两者差别如下图所示 2.2 如何使用 通过在应用项目中,通过git submodule...: 示作为 Host ,去消费哪些 Remote; exposes :表示作为 Remote ,export 哪些属性提供给 Host 消费 shared: 可以让远程加载的模块对应依赖改为使用本地项目的

2.4K10

package.json 知多少?

npm命名规则 name 即模块名称,其命名需要遵循官方的一些规范和建议: 名会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url安全的字符在名中都不能使用,可以使用 validate-npm-package-name...如果你的名与现有的名太相近导致你不能发布这个,那么推荐将这个发布到你的作用域下。 例如:用户名 conard,那么作用域为 @conard,发布可以是@conard/react。...当然,引用 optionalDependencies 中安装的依赖,一定要做好异常处理,否则在模块获取不到时会导致报错。...bundledDependencies 和以上几个不同,bundledDependencies 的值是一个数组,数组里可以指定一些模块,这些模块将在这个发布被一起打包。...这个配置并不会阻止用户安装,而是会提示用户防止错误使用而引发一些问题。 private 如果将 private 属性设置为 true,npm将拒绝发布它,这是为了防止一个私有模块被无意间发布出去。

1.8K10

5种前端代码共享方案:npmgit submodules、脚手架模板、复制、UMD或模块联邦

这五种包括:npmgit submodules脚手架模板生成复制UMD或模块联邦npm包被共享的代码作为npm,由引用方通过npm install安装。...有完善的使用文档。误区很多人认为,自己开发都是私有库,是不是不能用npm了?你可能以为npm必须发布到公开的,才能用。其实不是这样的,npm也可以从git仓库安装依赖。...你可以不发布npm,也可以只把产物(或源码)上传git仓库。所以个人开发者也能用npm,只是我认为效率不高罢了,不如直接用 git submodules。...脚手架可能会预先安装一些依赖,这些依赖是npm,开发者需要阅读脚手架文档来了解。代码生成后,代码全放在引用方的仓库里,开发者可能随时修改文件。因此,脚手架模板更新,项目更新难度相对较高。...(这样每次更新无需主动发布)减少公共资源的重复加载,提高用户体验。我的选择我是个人开发者,所以我放弃了npm,选用了git submodule。

10.9K61

102.精读《Monorepo 的优势》

精读 总的来说,虽然拆分子仓库、拆分子 NPM (For web)是进行项目隔离的天然方案,但当仓库内容出现关联,没有任何一种调试方式比源码放在一起更高效。...在前端开发环境中,多 Git Repo,多 Npm 则是这个理想的阻力,它们导致复用要关心版本号,调试需要 Npm Link。...对于共用的通过 Npm 安装,如果不能接受调试编译后的代码,或每次 npm link 一下,就没有办法调试依赖的。...IDE 遇到文件夹中的配置文件,导致全局配置失效或异常。...同时之间的引用也通过更通用的 symlink 完成,这导致了还是要在子模块目录存在 node_modules 文件夹,而且效果依赖项目初始化命令。

52910

基于 Lerna 管理 packages 的 Monorepo 项目最佳实践

pkg-main和pkg-npm的package.json耦合在一起,导致一些本来是工程的开发依赖也会发布npm 上去,变成pkg-npm 的依赖。 依赖的冗余。...发布需要手动修改版本号。 因为最终只发布了一个,但实际逻辑要求这个即要全局安装又要本地安装,业务没有拆开,导致要安装两遍。...耦合一起,即便使用 npm link 也会导致调试困难, 发版没有 CHANGELOG.md。...Lerna 是一个管理多个 npm 模块的工具,是 Babel 自己用来维护自己的 Monorepo 并开源出的一个项目。优化维护多的工作流,解决多个互相依赖,且发布需要手动维护多个的问题。...安装配置完成后,想通过 git commit 或者其它第三方工具提交,只要提交信息不符合规范就无法提交。从而约束开发者使用 npm run c 来提交。

2.9K61

Node.js 编写 CLI 的实践

有三个理由: 对Javascript语言更加熟悉 npm 完善的生态系统 npm OS无关的包管理机制 主要原因还是归咎于npm 完善的生态,目前npm官方有47.5万个三方可供使用,你可以很方便的使用一些已经编写的很不错的轮子去帮你快速开发...如果你使用shell或者其它语言来编写CLI,你需要针对各个主流OS来做兼容并且发布到不同的平台。...看个demo 注: 此处的Logo使用的是figlet这个npm, demo地址 npm关联CLI的基本原理 如何让Node.js编写的可执行?...模块发布npm上后,开发者安装这个的时候会检查是否有bin字段,如果有bin字段则会使用软链接的方式创建可以全局使用的命令。...可以在工程根目录下加.gitattributes文件,设置* text eol=lf,这样 git提交就不会讲LF转换成CRLF 原文链接:http://www.ivweb.io/topic/5918069a869edc1f59d6ba13

2.4K00

lerna 从0到1

简介 Lerna 是一种工具,针对 使用 gitnpm 管理多软件代码仓库的工作流程进行优化。 多包管理器 背景 当前手上需要同时维护几个npm工具,有些之间存在依赖管理。...lerna 4.0.0 DEMO 目录 root/ lerna.json lerna 配置 package.json packages/ npm集合 pkg-ts npm pkg-es6 安装...例如我们存在 A: v1.0.0 , b: v2.0.0 lerna.json v1.0.0。 发布新版本,更新版本为v1.1.0。...例如我们之前为使用lerna 管理的独立npm, 导入到lerna项目集合后, 可以使用改目录导入相关 git 记录等 lerna import 参数: --faltten lerna...diff info 显示环境信息 lerna info 问题 发布git add 失败 这里我在.gitignore 中忽略了, 版本锁文件。

1.2K30

什么时候不能在 Node.js 中使用 Lock Files

所以 yarn 和 npm 在引入了所谓的“lock file”,来跟踪你依赖项确切的版本。但是当你在开发要发布npm,应避免使用这类 lock file 。...但是如果将库或 CLI 发布npm,则永远不要发布 lock file。因为如果你使用它,则意味着你和你的用户可能在使用不同版本的依赖项。 什么是Lock File?...如果 npm 或 yarn 找到它们各自的 lock file,将使用它们代替模块安装。这对于持续集成(CI)等情况尤其有用。...那么当我们编写要发布npm 的库,为什么不能做同样的事呢?要回答这个问题,首先要讨论发布的工作原理。...如何发布模块 与某些人想的相反,你发布npm 的内容并不总是与 GitHub 上或项目中的内容完全相同。

1.4K30

Npm vs Yarn 之备忘大全

npm 开始作为 Node 包管理器,所以你会发现很多模块可以在服务器端使用。也有很多的添加命令供您在命令行中使用。你还会发现可以在前端使用的软件。...它并没有试图完全取代 npm。Yarn 同样是一个从 npm 注册源获取模块的新的 CLI 客户端。注册的方式不会有任何变化 —— 你同样可以正常获取与发布。...npm link yarn link 开发链接依赖,以便在其他项目中使用 npm unlink yarn unlink 取消链接依赖 npm publish yarn publish 将发布到......... npm 使用之额外技巧 如何寻找适宜的 npm 找到合适的软件可能相当具有挑战性 ——,毕竟有成千上万个模块供你选择。...具体例子来说,有些时候会有需求要删除 Git 仓库所有提交历史,而保留代码为当前状态;而删除 .git 文件夹可能会导致您的 git 存储库中的问题;所以可以使用另一种更为安全的办法:详见[如何删除 Git

1.5K90

Node.js安装详细教程

-g 模块,下载了一个全局,这个的默认存放路径C:\Users\xxx\AppData\Roaming\npm\node_modules下,时间长了肯定会占用C盘的资源,所以需要我们在node.js...\node_global,如下: 测试 安装cli测试一下(这是我需要的,自行测试自己的模块),通过npm install -g @vue/cli安装 这样就装好了 注意 在安装模块的时候建议使用管理员身份打开...cmd,避免不必要的错误 安装模块过大,网络不稳定可能报错timeout等问题,重来一次就好了 常见命令 node -v:查看node版本 npm -v:查看npm版本 npm root -g:查看的存放路径...配置安装全部的依赖,这样代码提交到git,就不用提交node_modules这个文件夹了。...devDependencies配置安装全部的依赖,这样代码提交到git,就不用提交node_modules这个文件夹了。

1.1K10

微前端qiankun从搭建到部署的实践总结

公共代码抽取后,其他的应用如何使用呢? 可以让common发布为一个npmnpm有以下几种组织形式: npm指向本地file地址:npm install file:../common。...直接在根目录新建一个common目录,然后npm直接依赖文件路径。 npm指向私有git仓库: npm install git+ssh://xxx-common.git发布npm私服。...本demo因为是基座和应用都集合在一个git仓库上,所以采用了第一种方式,但实际应用时是发布npm私服,因为后面我们会拆分基座和应用为独立的仓库,支持独立开发,后文会讲到。.../common方式安装的common就不适用了,所以最好还是发布到公司的npm私服或采用git地址形式。...这里主要考虑了三种方案: 使用git submodule。 使用git subtree。 单纯地将所有仓库放到聚合目录下并.gitignore掉。 使用lerna管理。

2K11

Npm vs Yarn 之备忘详单

npm 开始作为 Node 包管理器,所以你会发现很多模块可以在服务器端使用。也有很多的添加命令供您在命令行中使用。你还会发现可以在前端使用的软件。...它并没有试图完全取代 npm。Yarn 同样是一个从 npm 注册源获取模块的新的 CLI 客户端。注册的方式不会有任何变化 —— 你同样可以正常获取与发布。...npm link yarn link 开发链接依赖,以便在其他项目中使用 npm unlink yarn unlink 取消链接依赖 npm publish yarn publish 将发布到...具体例子来说,有些时候会有需求要删除 Git 仓库所有提交历史,而保留代码为当前状态;而删除 .git 文件夹可能会导致您的 git 存储库中的问题;所以可以使用另一种更为安全的办法:详见如何删除 Git...而且,不同的库之间也存在其他依赖。理想状态下使用语义化版本发布补丁不会包含大的变化,但不幸的是这必非真理。

1.4K30

在 monorepo 中怎么组织和优化研发流程?

github --yes", 第 6 步是通过 github actions yaml 文件配置的,执行的主要脚本就是打包构建以及发布npm。...但是在使用的过程中,我也发现一个问题,lerna version 不仅会修改真正发生内容变化的的版本号,还会修改 workspaces 中引用了这个子的其他的版本号。...如果所有都各自独立打包,其实是有问题的,比如当多个 release 对应的 workflow 同时进行时,如果 A 依赖的某个 B 还没打包并发布npm registry,就有可能导致 A...而不做 commit 就会导致 git 工作区不是 clean 状态,这会导致后续的 release-it 流程无法继续。...同时每个版本的 CHANGELOG.md 都是“大而全”。 这基本上就崩盘了,版本号都不对了。

95930

小程序 boilerplate cli 工具教程

实现 根据上面一节,先安装依赖的npm install commander download-git-repo mkdirp --save // 这个三个插件是使用时依赖,而不仅仅是开发依赖,所以用...,更新可以同步到全局,建议再执行: npm link 12.png (gif 过大无法展示,附件不允许添加图片…大家想象一下好了) 发布 使用 npm publish 发布到 npmjs 上,具体可以参考文档...可以看到 npm 上已经有很多类似的插件了: 09.png 作为一个 boilerplate 可能会根据团队/个人需求不同而不同,发布一个自己常用的,方便在各个设备上拉取使用,所以 scoped package...,你值得拥用,只是在发布和安装的时候需要敲比较长的名,使用时不用: 10.png 11.png 有 scope 的默认发布的时候是有私有的,这个是 npm 付费用户才能使用的权限,免费用户要发布这样的需要带参数...如果有更轻量的方法请告诉我~ 参考资料 其他开发者写的工具:MeCKodo/wxapp-cli ES2015 & babel 实战:开发 NPM 模块 Creating Your First Node.js

2.4K30

2018 年了,你还是只会 npm install 吗?

url, 该 url 所指向的代码库满足条件 (a) git@github.com:webpack/webpack.git 2.2 安装本地/远程git仓库 上面表格的定义意味着,我们在共享依赖...://isaacs@github.com/npm/npm.git git://github.com/npm/npm.git#v1.0.27 场景3: 开源 package 问题修复 使用某个 npm 发现它有某个严重...4.2 依赖版本升级 问题来了,在安装完一个依赖之后有新版本发布了,如何使用 npm 进行版本升级呢?...虽然 semver 约定了小版本号应当保持向下兼容(相同大版本号下的小版本号)兼容,但万一有不熟悉不遵循此约定的发布者,发布了不兼容的,此时就可能出现因依赖环境不同导致的 bug。...package-lock 文件 合理使用多样化的源安装依赖: npm install | 使用 npm: >=5.2 版本 使用 npm scripts 与

6.5K160

公共模块管理之 Git Submodule 使用总结

,Java 的 Maven, php 的 composer 等包管理工具皆同理,有效解决了原先需要插件依赖,手动在网上搜索下载代码复制到项目目录,自己管理使用的黑暗模式,大大提升了工程化效率。...以世界上最好的语言 JavaScript 的伴侣 npm 为例,开发者编写一个公共模块,作为 npm package 发布,不仅可在自己的项目间复用,还可以贡献到开源社区,使更多的开发者受益。...使用使用起来也极为简单,一条命令搞定: $ npm install 1.2 git模块管理工具 submodule git submodule 能够在项目主工程中添加工程模块...,而又保持工程独立的版本控制,和 npm 极简的体验相比,git submodule 有一定的学习成本,对于初学者并不友好。...2.2 获取 submodule 使用 git submodule add 命令会自动拉取工程项目代码到指定目录,但其他开发者获取主项目代码使用 git clone 命令是不会拉取到子项目的代码的

4.9K180
领券