Node 项目在项目根目录中名为 package.json 的文件中跟踪依赖关系和元数据。这是你项目的核心。它包含名称、描述和版本之类的信息,以及运行、开发以及有选择地将项目发布到 NPM 所需的信息。
最近,曾经在 2019 - 2022 年担任 npm 研发经理的 Darcy Clarke 公开吐槽了 npm 生态系统的安全性,称其一直具有巨大的安全隐患。
前段时间,我们邀请了我们“城内”(葡萄城)资深开发工程师刘涛为大家分享了一次干货满满的关于Electron线上公开课,在课程过程中有不少同学对于NPM的概念和用法有一些疑问,所以这次我们希望通过这篇文章来解答各位同学的问题。另外在介绍的基础上,我们还会适当的深入介绍下,如何在npm上发布第一个属于自己的包。那么,让我们马上开始吧!
npm 的全称是 Node Package Manager,是一个基于 Node.js 的包管理器,创建初衷是让 JavaScript 开发人员能够更容易地分享和重用代码。
在广阔的软件开发领域,有一个名字已成为 JavaScript 生态系统的代名词:npm[3]。
GitHub Package Registry是一个软件包托管服务,类似于npmjs.org,rubygems.org和hub.docker.com,用户可以使用该服务托管软件包和代码,并将其作为项目中的依赖项。
技术一直在变化,我们的流程和做法也需要跟上这些变化。因此,虽然npm已经有12年的历史了,但围绕 npm 包创建的做法应该更现代。
1、npm是什么? NPM (node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。 npm 可以让 JavaScript 开发者在共享代码、复用代码以及更新共享的代码上更加方便。 当一个 JavaScript 开发者为了解决某个问题而编写了一些代码并将其共享出来的话,其他的开发者能够在自己的应用程序中复用这些代码,npm 让这些事情变得简单。 如果你使用了其他开发者开发的代码,你就可以很方便地使用 npm
有则笑话,如此讲到:“老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成。我嘴一抽,来了句:人和动物最大的区别就是人会使用工具。……”。撇开这样特例场景,这句话还是非常用有道理的;毕竟从远古石器时期或更早,到如今,所言之语,所穿之衣,代步之车,所学的知识,所晓的常识.....皆是工具;可以说绝大部分人之间的差异(天才级除外),仅在于工具使用之优劣罢了。在工具的使用中,很多人极大程度上停留于会用层面,如若不遇到问题,几乎就处于停滞;这本身倒也没有问题,但可能因为没有透彻的了解,而错失了对该物可以拥有的想象力,从而错过了许多本该有的美好,如此的可惜。
有则笑话,如此讲到:“老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成。我嘴一抽,来了句:人和动物最大的区别就是人会使用工具。……”。撇开这样特例场景,这句话还是非常用有道理的;毕竟从远古石器时期或更早,到如今,所言之语,所穿之衣,代步之车,所学的知识,所晓的常识…..皆是工具;可以说绝大部分人之间的差异(天才级除外),仅在于工具使用之优劣罢了。在工具的使用中,很多人极大程度上停留于会用层面,如若不遇到问题,几乎就处于停滞;这本身倒也没有
然后,在写这系列文章时,发现有些操作需要用到package.json中的属性。然后,有些属性看起来人畜无害,但是用起来却需要查很多的资料。所以,就想着。写一篇或者两篇关于package.json的文章。
刚刚,代码共享平台 GitHub 发布公告称,该公司已经正式收购广受欢迎的开源 Javascript 包管理服务 npm。
大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder。
允许不修改[major, minor, patch]元组中最左边的非零元素的更改 。换句话说,这允许版本1.0.0及以上版本的补丁和次要更新,版本的补丁更新0.X >=0.1.0,以及版本的不更新0.0.X。
5 月 26 日,GitHub 披露了 4 月中旬一次安全漏洞的更多调查细节,描述了攻击者如何抓取包括大约 10 万个 npm 用户的详细登录信息。同时,这也显示了在将 JavaScript 包注册中心整合到 GitHub 的日志系统后,GitHub 在内部日志中存储了 “npm 注册中心的一些明文用户凭证”。
如今,NPM已经成为javascript库的事实上的注册表。特别是React,Angular和其他前端库主导的网络和node.js接管的服务器端,NPM软件包比以往任何时候都更受欢迎。通常,我们会在代码中引入实用包,比如typy,sugar,并轻松的使用它们。
Aqua Nautilus最新报告指出,PowerShell Gallery关于包名称和所有者的政策中仍然存在重大缺陷,这些缺陷使得在该注册表中不可避免地发生typosquatting攻击,同时也使用户极难辨别软件包的真实所有者。最终,这些缺陷将为潜在的针对注册表庞大用户群的供应链攻击铺平道路。
NPM最初是作为Node.js的软件包管理工具而创建的,用于管理Node.js应用程序的依赖关系和模块。随着时间的推移,NPM变得非常流行,并且逐渐成为广泛用于前端和后端JavaScript开发的工具。开发人员可以使用NPM来安装、更新、发布和管理各种JavaScript包(也称为模块或库),这些包可以包含从小型功能性工具到大型应用框架的各种类型的代码。
Verdaccio 是一个简单的、零配置要求的本地私有 npm 注册表。无需整个数据库即可开始!Verdaccio 开箱即用,带有自己的小型数据库,并且能够代理其他注册表(例如 npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的人,Verdaccio 支持各种社区制作的插件,以连接到服务,例如 Amazon 的 s3、Google Cloud Storage或创建您自己的插件
在十年前,我们还可以在一次会议上阅读出每个 npm 包的名称。到 2023 年底,来自将近 90 万维护者的 npm 注册表已经导入了近 400 万个包。
本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器。这里的 node 包就是指各种 javascript 库。 npm 是随同 Nod
NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。
A guide to using package-lock.json in NPM
“可是在我的机器上能工作啊!”这种场景可能是调试 bug 时最常见的问题。这通常是由于出错的机器和你自己的机器上系统的底层依赖性不同的结果。所以 yarn 和 npm 在引入了所谓的“lock file”,来跟踪你依赖项确切的版本。但是当你在开发要发布到 npm 的包时,应避免使用这类 lock file 。在本文中,我们将讨论为什么要这样。
CI\CD,全称:持续集成 (Continuous Integration) ,持续部署 (Continuous Deployment) ,是开发流程的自动化利器,如今可以在公有项目上免费使用了。
随着2024年三月的到来,前端技术领域迎来了一系列更新和进展。从Babel 7.24.0带来的装饰器和JSON模块改进,到Parcel v2.12.0的新特性,每项更新都体现了技术社区对前端开发便利性和效率的持续追求。此外,Package Metadata Interoperability Collab Space的成立、Deno团队的最新调查、JSR的公测发布,以及Jco 1.0的推出,都在不同维度上推动了前端技术的发展。这些进展虽然各有侧重,但共同构成了前端技术不断前行的足迹。本文将逐一解析这六大技术亮点,探索它们对开发者及开发生态的潜在影响。
npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。
node-gyp的作用我已经不想赘述了,这里给一个我之前文章的链接:cnblogs看这里,知乎看这里。本文主要从源码入手,介绍node-gyp查找VisualStudio的过程
为什么叫pnpm?是因为pnpm作者对现有的包管理工具,尤其是npm和yarn的性能比较特别失望,所以起名叫做perfomance npm,即pnpm(高性能npm)
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。
npm全称Node Package Manager,用JavaScript写成,已有超过10年历史,现在拥有130万个软件包,每月下载量达750亿次。
有些攻击方式虽然听起来很幼稚,但有时候却也可以生效,比如typosquatting攻击——我们上次看到这种攻击是在去年6月份,这本身也是种很古老的攻击方式。 所谓的typosquatting,主要是通过用户的拼写错误诱导用户访问或下载某个伪装成合法工具的恶意程序——其核心只在于工具名或文件名和原版很像,比如app1e.com,这种类型的钓鱼就是typosquatting。最近 npm 就遭遇了这种攻击。 有人在 npm 上传了不少恶意包 npm的CTO CJ Silverio在博客上发表了一篇文章提到:
此命令用于安装 npm 包和特定包所依赖的其他包。它将安装在本地node_modules文件夹中。
在软件开发工作中,代码依赖管理是个绕不过的话题。针对依赖管理,不同的语言、工具、平台和团队都有自己的解决方案。本文将会介绍 GitHub 推出依赖版本更新工具 Dependabot。正如其名字,Dependabot 就是一个机器人,用来自动更新项目依赖,确保仓库代码依赖的包和应用程序一直处于最新版本。经过一段时间的试用,笔者认为这是一款不错的工具,尤其对于开源项目。
在现代软件开发中, 我们会使用一些公共镜像作为基础镜像来快速构建我们的应用镜像,并将其部署到生产环境中。
文件cargo/src/cargo/ops/tree/format/parse.rs的作用是解析Rust Cargo的树形依赖格式文件。
Jenkins 2 image based on Red Hat Enterprise Linux的镜像
容器镜像是可执行的软件包,包括运行应用程序所需的所有内容:代码、运行时、系统工具、库和设置。通过构建自定义镜像,您可以在任何支持Docker的平台上无缝地部署应用程序及其所有依赖项。
RMI的全称是Rmote Method Invocation,即远程方法调用,具体怎么实现呢?远程服务器提供具体的类和方法,本地会通过某种方式获得远程类的一个代理,然后通过这个代理调用远程对象的方法,方法的参数是通过序列化与反序列化的方式传递的,所以,1. 只要服务端的对象提供了一个方法,这个方法接收的是一个Object类型的参数,2. 且远程服务器的classpath中存在可利用pop链,那么我们就可以通过在客户端调用这个方法,并传递一个精心构造的对象的方式来攻击rmi服务。
hexo的插件嵌入有两种方式,一种是通过脚本(Script)的方式引入,demo可参考自定义标签实现;一种是通过插件(Packages)的方式将自定义的插件内容发布到npm上。
本来需要配置.npmignore配置文件,但是网上不建议用这种方式,说是黑名单的方式,不在黑名单里的关键信息都发上去了。 而是建议使用package.json里配置白名单的方式。于是将package.json配置如下: 关键配置处加上了备注信息:
npm,cnpm,yarn这三个或许使用Hexo,Hugo,vuepress等静态博客搭建的小伙伴们来说,会经常遇见,会使用它们进行插件,依赖包等的安装、卸载与更新,如果你是前端开发者或者是准备从事前端的话,你会经常与它们三个打交道,下面简单的说说它们三剑客吧!
包SEO: 可以加一个 description ,别人可以在npm 网站更好的查找你的npm Module
在上一节中我们介绍了如何升级 Electron 应用,现在我们已经介绍完了如何开发一个 Electron 应用以及如何把 Electron 应用分发给用户。如果按照一个产品的生命周期来考虑,那么我们现在面对的是如何观察、分析、调试线上应用了,如果你不了解 Electron 应用在用户侧的特征,那么就很难正确的分析线上应用的问题。
在近几年,Kubernetes迅速成为了容器编排的事实上的开源标准。与虚拟机不同,Kubernetes在抽象化基础架构的同时可靠地大规模编排容器,这可以帮助开发人员将工作负载与基础架构的复杂性分开。Kubernetes是CI/CD自动化的理想选择,因为它提供了许多内置功能,这些功能使应用程序部署实现标准化和可重用,提高了开发人员的生产力,并加快了云原生应用程序的采用。
它是一个命令行工具,npm已经被全球超过1100万开发人员所依赖,- 拥有超过一百万个软件包,是世界上最大的软件注册表。也可以形象的理解为一个应用商城,我们可以在里面下载各种已经编写好的代码,像常用的jQuery,webpack等等。官网链接
领取专属 10元无门槛券
手把手带您无忧上云