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

为什么要使用 package-lock.json

package.json 使用语义版本【https://semver.org/】定义所需依赖及其各自版本。但是语义版本控制可能很棘手。...通过将其提交到你 VCS(绝对应该这样做),可以返回历史记录并复制确切依赖关系树。 确保始终向你 VCS 提交 package-lock.json,以在任何给定时间跟踪确切依赖树。...npm update update 将会读取 package.json,用来查找可以更新所有依赖。随后它将构造一个新依赖关系树并更新 package-lock.json。 还记得语义版本控制吗?...假设我们在 package.json 中有一个依赖,状态为 ^1.4.5。 字符 ^ 告诉 NPM 检查在 1.X.X 范围内是否较新版本,如果有,则进行安装。...npm ci ci 将安装与 package-lock.json 有关所有依赖,类似于 install。这里主要区别在于,在任何情况下都不会更改 package-lock.json。

1.3K20

你不知道opn模块

优点 长期维护 支持应用参数 因为它使用spawn而不是更安全exec 修复了大部分node-open解决问题 包含Linux 最新xdg-open脚本 模块地址 https://npm.taobao.org...webpack也可以通过dev-server来实现启动浏览器和服务,我们看下它是否也是依赖这个模块实现呢?...在webpack-dev-server 模块中,生产依赖中,我们如愿找到了opn模块依赖,顺便我扒一下它github托管源代码,源文件地址:webpack-dev-server,在这个文件中,我们找到了...opn模块引入以及其对应使用,在这里我先吧代码搬下来,然后和大家一起分析下与我们使用何不同。...作为常识,我们要知道对象属性配置或者配置为undefined 转为布尔均为false,所以判断其是否配置只需要 options.open即可 一个小功能需要字段以及提示信息需要在功能开始之前进行定义

51310
您找到你想要的搜索结果了吗?
是的
没有找到

在 Ubuntu 和其他 Linux 发行版上使用 Yarn

使用 Yarn 我假设你对 JavaScript 编程以及依赖工作原理一些基本了解。我在这里不做详细介绍。我将向你展示一些基本 Yarn 命令,这些命令将帮助你入门。...使用 Yarn 创建一个新项目 与 npm 一样,Yarn 也可以使用 package.json 文件。在这里添加依赖。所有依赖包都缓存在项目根目录下 node_modules 目录中。...使用 Yarn 升级依赖 你可以使用以下命令将特定依赖升级到其最新版本: yarn upgrade 它将查看所​​涉及是否具有较新版本,并且会相应地对其进行更新。...upgrade 它将检查所有依赖版本,如果有任何较新版本,则会更新它们。...使用 Yarn 删除依赖 你可以通过以下方式从项目的依赖中删除包: yarn remove 安装所有项目依赖 如果对你 project.json 文件进行了任何更改,则应该运行: yarn

79020

12 个提高JavaScript编码效率 NPM 技巧

任何使用 Javascript  开发人员都使用过这个出色 CLI 工具来为他们项目安装依赖。...,然后全新安装 它不会写入 package.json任何包锁:安装基本上是冻结 npm install 可以安装单个依赖包,npm ci 只能一次安装整个项目所以依赖包,无法安装单个依赖包 另外... 如果我们要检查任何解决问题或将任何错误归档到npm软件包,我们也可以通过运行以下命令导航到网站: npm bug  类似,npm repo...这样就形成了一个平面且具有重复数据删除功能树。 npm dedupe or npm ddp 8.扫描应用程序中漏洞 我们可以运行 npm audit 命令来扫描我们项目中任何依赖任何漏洞。...CLI是否足够权限来安装javascript包,它是否能够连接到npm注册表。

1.3K30

因为使用peerDependencies而引发bug

发现猫腻(yarn.lock) 当我一筹莫展发呆时,突然发现目录树中yarn.lock变色了,看来是改动了,我寻思着不可能啊,我没动package.json依赖啊,怎么会发生变化呢?...如果将依赖包放在peerDependencies下,对插件开发者是不友好,会出现下述问题: install时候,所需依赖不会安装,使用ide开发时会报错找不到相关依赖。...image-20210912140550142 build时候,因为依赖安装,导致无法打包(文章开头提到报错) 这么看的话,peerDependencies这个属性,好像没啥用了。...当然存在即合理,如果大家有什么更好看法,欢迎在评论区留言讨论。 解决方案 知道他们各自优点和缺点后,我也就知道了如何解决这个问题。...既然dependencies中依赖包只要和调用者版本号一致,就不需要重新安装依赖,那我们把它版本号放开,给个范围,这样不就可以了 在package.json版本号可以带下述符号: ~波浪号,匹配最新补丁版本号

81120

前端包管理工具与配置

NPM是随同NodeJS一起安装包管理工具,能解决NodeJS代码部署上很多问题,常见使用场景以下几种: 允许用户从NPM服务器下载别人编写第三方包到本地使用。...是生产环境依赖 卸载模块 $ npm uninstall express 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看: $ npm ls 更新模块...private:是否私有,设置为 true 时,npm 拒绝发布。 license:软件授权条款,让用户知道他们使用权利和限制。 bugs:bug 提交地址。...,为了区分就新增了 module 方式,但是 ES6 模块化方案效率更高,所以会优先查看是否 module 字段,没有才使用 main 字段。...style:供浏览器使用时,样式文件所在位置;样式文件打包工具parcelify,通过它知道样式文件打包位置。 files:被项目包含文件名数组。

38610

关于 yarn.lock 在实际项目中一些作用

在实际项目中我们如果想正确使用 yarn.lock, 必要了解什么是锁定文件以及它是如何工作。尽管根据您使用是 npm 还是 yarn 可以不同名称,但前提几乎相同。...依赖锁定文件将被忽略。 简而言之: 当存在于项目中时,yarn.lock 是有关项目中依赖当前版本主要信息来源。...Yarn 使用该信息来检查它是否需要更新任何东西——它将当前安装在项目中依赖版本(列在 yarn.lock 中)与 package.json版本限制进行比较,并在需要时更新包。...它列出了在安装过程中使用依赖版本。 这意味着它会查看您 package.json 并根据版本控制语法,它将安装您项目依赖,然后是它们依赖,然后是它们依赖,等等。...假设您项目使用两个依赖:chicken 和 farm.

84410

带你深入了解NPM——NPM初学者指南

毕竟,他们每天都使用它来管理他们项目使用包。 但是,除了用它安装软件包外,大家是否真正深入了解过NPM呢?...audit:对已安装依赖运行安全审核,确保没有已知漏洞影响它们(以及扩展,您项目)。您甚至可以使用该标志fix自动修复在审核期间可能发现任何问题。...当您应用程序开始增长并包含越来越多模块时,这尤其有用。使用此命令绝对是可选,但如果您有很多依赖,它将在安装期间(在CI / CD环境中最有用)提供相当大减少。...例如,通过键入以下内容可以在发布新版ExpressJS时收到通知:反过来,您可以使用该信息执行任何您喜欢操作(例如自动更新依赖)。...在任何一种情况下,它不仅会列出package.json文件中可见名称和版本,还会列出它们依赖关系及其版本。 outdated:检查项目中过时包。

1.8K20

加速开发流程 Dockerfile 最佳实践

在这个项目中,在 package.json 文件中指定了一些依赖,这些依赖是在运行 npm ci 命令时获取。...也就是说除了会花费很长时间得 package.json 文件以外其他任何文件发生了变更得话,都将会重新获取依赖放置到 node_modules 目录下面去。...为了避免这种情况发送,只在依赖发生变更时(即,当 package.json 或 package-lock.json 更改时)才重新获取依赖,我们应该考虑将依赖安装与应用程序构建和运行分开。...true -v ${PWD}/src/:/code/src/ -p 3000:3000 repository/image_name复制代码这里我们通过 -v 将宿主机上面的代码目录挂载到容器中,当宿主机上代码任何变更时都会在容器中进行实时加载更新...此外至少还有两个非常好理由为镜像使用具体标签:可以很方便在容器编排系统(Swarm,Kubernetes…)中找到所有运行镜像版本容器。

83230

在nodejs中使用npm包管理器

,在生成环境中并不需要,那么在生产环境中,我们可以使用: npm install --production 以避免安装这些开发依赖。...>@ 在安装之前,我们可能想要知道一下这个包到底哪些版本,我们可以这样npm view versions: npm view inquirer versions [ '0.1.0...依赖包更新 有时候,我们需要更新package.json中指定依赖包,我们可以使用npm update,按照上一节所讲规则,npm update只会更新次版本和补丁版本,而不会更新主版本。...如果要查找package.json是否可用更新,可以使用npm outdated: npm outdated Package Current Wanted...我们知道,当我们使用npm install时候,根据pacakge.json中指定依赖版本不同,可能会安装不同依赖包版本。

92920

package.json 详解

对于未发布程序包,此属性不是严格要求。通常在将新版本发布到 NPM 之前,根据 SemVer,版本号会增加。当不依赖程序包作为依赖或未将程序包发布到 NPM 时,通常不使用这个工作流程。...但是如果将软件包用作依赖,那么确保 version 字段保持最新非常重要,这样可以确保其他人所使用软件包正确版本。...中最重要字段之一,它列出了项目使用所有依赖(项目所依赖外部代码)。...最好使用 npm 命令 npm install ,npm uninstall 和 npm update 来管理依赖,这样可以使你 package.json 和 node_modules/ 文件夹保持同步...因为 package.json 仅是我们记录依赖位置,而 node_modules/ 文件夹是安装依赖代码实际位置,所以手动更新 package.json 依赖字段不会立即将我们状态反映到

2.2K20

前端小技巧

刚开始前端时候,工具得用好,就能事半功倍,咱们知道前端开发比较常用包管理器两种,那就是yarn和npm,那到底什么区别呢?来看看。...添加依赖使用yarn添加依赖时,可以选择性地将它们保存到“dependencies”、“devDependencies”或“peerDependencies”中。...> 更新依赖:可以使用以下命令更新所有依赖版本: yarn upgrade 如果只需要更新某个依赖,可以使用以下命令: yarn upgrade 安装依赖...:当从代码库中检出项目时,可以运行以下命令安装所有依赖: yarn install 运行脚本:在package.json文件“scripts”字段中定义脚本可以使用以下命令来运行: yarn <script-name...,npm速度实在是感人,所以,使用cnpm,就是中国版npm,那速度杠杠,谁用谁知道: 1、打开终端或命令行工具。

14610

【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置Vue3目构建工具

Parcel是所有代码编译器,无论使用哪种语言或工具链。Parcel会获取您所有文件和依赖,进行转换,然后将它们合并到较小一组输出文件中,这些文件可用于运行代码。...使用HTML文件作为入口点使Parcel易于使用,因为它可以直接从HTML文件中检测依赖关系,并将所有检测到依赖关系自动捆绑到各自捆绑包中,而无需进行任何配置。...主要是让大家看下我安装依赖知道我要干什么了第二点呢?也是最重要一点。我们知道像Webpack、VueCLI、Vite这些工具都有自己配置文件,那么Parcel 2在哪配置呢?啥?...用户喜欢它提供易用性和开发人员体验,但是总是一些边际情况和实际用例需要更多可定制性。 也就是说定制化配置你可以在package.json文件中配置。...includeNodeModules 是否捆绑所有/无/某些node_module依赖。 context 捆绑软件应在哪个运行时中运行。

1.2K30

Docker | 加速开发流程 Dockerfile 最佳实践

在这个项目中,在 package.json 文件中指定了一些依赖,这些依赖是在运行 npm ci 命令时获取。...也就是说除了会花费很长时间 package.json 文件以外其他任何文件发生了变更的话,都将会重新获取依赖放置到 node_modules 目录下面去。...为了避免这种情况发送,只在依赖发生变更时(即,当 package.json 或 package-lock.json 更改时)才重新获取依赖,我们应该考虑将依赖安装与应用程序构建和运行分开。...true -v ${PWD}/src/:/code/src/ -p 3000:3000 repository/image_name 这里我们通过 -v 将宿主机上面的代码目录挂载到容器中,当宿主机上代码任何变更时都会在容器中进行实时加载更新...此外至少还有两个非常好理由为镜像使用具体标签: 可以很方便在容器编排系统(Swarm,Kubernetes...)中找到所有运行镜像版本容器。

1.4K20

TypeScript 里 module 解析过程 - Module Resolution

为了检查 a 任何使用,编译器需要确切地知道它代表什么,并且需要检查它定义 moduleA。 此时,编译器会问“moduleA 形状是什么?”...其中包括将 .ts 文件编译为 .js,以及将依赖从不同源位置复制到单个输出位置。 最终结果是模块在运行时名称可能与包含其定义源文件名称不同。...需要注意是,编译器不会执行任何这些转换; 它只是使用这些信息来指导将模块导入解析到其定义文件过程。...在诊断模块解析原因或解析为不正确定义时,这可能很困难。 使用 --traceResolution 启用编译器模块解析跟踪可以深入了解模块解析过程中发生情况。...假设我们一个使用 typescript 模块示例应用程序。

2.4K30

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

你懒得读 npm 文档,我帮你翻译然后试验整理过来了 1. npm init 我们都知道 package.json 文件是用来定义一个 package 描述文件, 也知道npm init 命令用来初始化一个简单...虽然使用者无需关注这个目录里文件夹结构细节,只管在业务代码中引用依赖包即可,但了解 node_modules 内容可以帮我们更好理解 npm 如何工作,了解从 npm 2 到 npm 5 哪些变化和改进...,除最外层 requires 属性为 true 以外, 其他层 requires 属性都对应着这个包 package.json 里记录自己依赖 因为这个文件记录了 node_modules...任何时候有人提交了 package.json, package-lock.json 更新后,团队其他成员应在 svn update/git pull 拉取更新后执行 npm install 脚本安装更新后依赖包...true save true/false 指定是否在 npm install 后保存包为 dependencies, npm 5 起默认为 true 删除指定配置命令为 npm config delete

6.5K160

npm 生态系统存在巨大安全隐患

任何使用公共注册表工具都很容易受到劫持。恶意攻击者可以隐藏恶意软件和脚本,把自己隐藏在在直接或间接依赖中。在新型供应链攻击方面,这是一个非常重大问题,大家可以将其称为 “清单混淆”。...情况下使用 --prefer-offline 配置,则在系统上下次运行该软件包安装时,可能会安装其中隐藏依赖。...,反之亦然 与 npm@6 类似,当使用 --offline 配置时,npm@9 会愉快地安装包缓存 tarball package.json 中引用依赖。...重现步骤: 安装格式错误依赖以使其缓存 使用 --offline 配置运行安装和/或关闭网络可用性(例如,npm install --offline --no-package-lock) 查看将安装未在...联系你知道依赖于 npm 注册表 manifest 数据任何已知工具作者/维护者,并确保他们在适当时候开始使用内容作为元数据(除了 name&version 之外所有内容)。

19020
领券