首页 > 其他分享 >NPM 实用命令与快捷方式

NPM 实用命令与快捷方式

时间:2023-04-24 10:23:57浏览次数:30  
标签:NPM npm package 实用 命令 json 软件包 快捷方式

在 JavaScript 中,无论是新手还是专家都可能在命令行中使用过 NPM。在本篇文章中,我将会整理超实用的 NPM 命令、快捷方式及技巧,帮助 JavaScript 开发人员提高生产力和效率。
 

在这篇文章中,我们将涵盖以下主题:

  • npm 的定义。
  • 使用 npm 包管理系统管理应用程序依赖项,来发布或取消发布包。
  • 按版本号安装包。
  • package.jsonpackage-lock.json 文件之间的区别。
  • 使用 npm 命令审核包安全性。
     

在开始之前,让我们回顾一下什么是 NPM 以及如何使用它。
 

什么是 NPM?

从概念上讲,NPM(Node Package Manager)类似于PiP(Python),RubyGems(Ruby on Rails),apt-get(Debian),rpm / yum(Red Hat/Fedora),CPAN(Perl)或PEAR(PHP)等工具。NPM 于 2010 年发布,是 Node.js 的包管理和分发系统,Node 是一个用于构建服务器端应用程序的环境。其目的是使用简单的命令行界面在互联网上发布和分发 Node.js 包。近年来,它也被广泛用于分发前端库,如 React 或 TailwindCss。使用 npm,用户可以在 npm 的网站上快速找到用于特定目的的软件包、下载、安装或管理用户已安装的软件包。
 

如何使用 NPM

使用 NPM 很简单,可以理解为像 Node 一样从命令提示符运行的另一个命令。举个例子,现在创建一个名为 tester 的目录,并使用以下命令初始化项目:npm init-yes。此文件夹中自动生成一个名为 package.json 的文件,此文件包含有关项目的所有信息。之后,执行以下命令:
npm install ioredis
 

在这里,NPM 是命令行界面 (CLI) 程序,可以向其发出安装命令。 ioredis 是该命令的参数,这是用户与 NPM 的交互将采用的一般形式。通过执行上一个命令,我们将在 tester 文件夹中创建一个名为 node_modules 的新目录。这是构成 ioredis 模块的所有代码。
 

package.json 和 package-lock.json 之间的区别

通过使用命令:npm install ioredis,还会自动生成名为 package-lock.jsonpackage.json 的两个文件。一般来说我们会认为 package.json 文件类似于 package-lock.json 文件。
 

实际上这两个文件确实区别不大。package.json 包含项目的所有信息,尤其是项目中使用的依赖项或模块及其本地版本。 package-lock.jsonpackage.json 文件的副本、版本化的依赖树,它还包括用户使用的依赖项和开发依赖项。
 

NPM 全局与本地包

包可以在本地或全局模式下安装。在本文我们是以本地模式安装软件包。

  • 本地软件包安装在运行 npm install 的目录中,并放在此目录下的 node_modules 文件夹中。
  • 全局软件包都放在系统中的一个位置(确切的位置取决于用户的设置),无论用户在哪里运行 npm install -g。通常,全局安装的包提供从 shell (CLI) 运行的可执行命令,并且跨项目重复使用该命令。全局模式包可从命令行界面 (CLI) 获得,而本地模式下的包安装在 npm install 目录下的 node_modules 文件夹中。全局软件包的例子有 nodemon,grunt-cli,forever,cross-env 等等。
     

按版本号安装软件包

npm 中的版本号匹配功能强大且灵活。有了它,用户可以定位给定包的特定版本或任何版本号范围。默认情况下,NPM 会安装命名包的最新版本,就像我们在上一节中所做的那样。无论是采用默认值还是指定版本号,NPM 都将确定要安装的内容。包版本在 package.json 文件中声明,因此让我们看一下相关字段:

{ …
“version”: “4.28.2”,
“dist-tags”: {
“latest”: “4.28.2”
},
… }

 

版本字段显然声明了当前包版本。dist-tags 包字段列出了软件包维护者可以用来帮助用户选择正确版本的符号标记。此字段由 npm dist 标记命令维护。npm install 命令支持以下变体:

$ npm install @tag 
$ npm install @version 
$ npm install @version-range

 

用户可以指定 [email protected] 以定位精确版本,或指定 ioredis@“>3.1.0 < 4.0” 以定位一系列 ioredis V3 版本。版本匹配说明符包括以下选项:

  • 完全版本匹配:4.28.0
  • 至少版本 N:>4.28.0
  • 最高版本 N:<4.28.0
  • 两个版本之间:>=4.24.3 <4.28.3

@tag属性是一个符号名称,例如 @latest、@stable 或 @canary。包所有者将这些符号名称分配给特定的版本号,并可以根据需要重新分配它们。@latest 比较特殊,每当发布包的新版本时都会更新。
 

卸载包

如果你想下载安装过的包,使用以下指令:

$ npm uninstall <package-name>

 

更新包

项目建立之后,有时我们会需要更新它所依赖的包。这可以这么操作:

$ npm update

NPM 将关闭并将所有软件包更新到最新版本。如果要将包更新到特定版本,请使用以下命令:

$ npm update <package-name>@version

 

审核包的安全性

有时使用的软件包会被发现存在安全漏洞,NPM 团队构建了以下命令来处理这个问题:

$ npm audit

运行此命令将扫描用户的 package.json 文件,并将依赖项列表提交到默认 NPM 镜像仓库,请求有关其中任何已知漏洞的报告。此报告还将包含有关如何修正的信息。如果想要快速修复问题,请运行以下命令:

$ npm audit fix

 

通过执行这个命令, NPM 将使用未报告漏洞的最新可用版本,来更新易受攻击的软件包。如果要查看详细的审核报告,请执行:

$ npm audit –json

如果需要查看纯文本报告,请执行:

$ npm audit –readable

如果想看看 npm audit fix 怎么执行的,可以使用这个命令:

$ npm audit fix –dry-run

 

重复数据删除和修改

用户们常常抱怨的是 node_modules 目录的大小会突然增加。虽然现在磁盘空间很便宜,但是能够节省空间有什么不好呢?NPM 提供了两个命令来处理这种情况,第一个是:

$ npm dedupe

或:

$ npm ddp

此命令在 node_modules 中搜索 tree of packages,并查找可以在 tree 中向上移动并在依赖项之间共享的包,来减少冗余并节省空间。当安装 NPM 软件包时,packge tree 会随之被构建。尽管包之间会有共同的依赖项,但 package tree 有很多独立的分支,而通过该命令可以重新组织这些分支。
 

第二个命令:

$ npm prune

此命令将检查已安装的软件包并查找可能不再需要的任何软件包。这通常发生在卸载软件包时,特别是用户在某个时候重复进行数据删除。
 

发布和取消发布包

将包发布到镜像仓库很简单!当用户写好包之后,npm 会出初始化项目并将代码集中在一起,然后转到镜像仓库网站并创建一个新帐户。用户需要从命令行登录到该帐户。

$ npm login

输入用户名、密码和电子邮件地址。登录后,进行发布:

$ npm publish

使用此命令,将使用默认名称发布包。不过可能会出现包名称被占用的情况。因此建议在发布之前先对包名称进行搜索,如果名称没有被占用的话,包就会立即被发布并在镜像仓库中可用。
 

提示

如果所需的名称不可用,NPM 还允许用户发布到 scope。例如,用户可以将名称更改为 @/(或执行 npm init-scope=)。然后,还需要将 -access public 添加到发布命令中。这样,只要包名称在 scope 内是唯一的就可用了,该名称同样还可以在其他 scope 中使用。如果用户需要从镜像仓库中删除这个软件包,只需:

npm unpublish [<@scope>/]<package-name>[@<version>]

 
到现在为止,我们已经探索了一些非常高频实用的 NPM 命令。当然,NPM 还有许多其他实用命令我们还没有涉及到,你可以使用 command_npm help_ 获取帮助,或去 NPM 官方文档网站来探索更多命令。
 

接下来我将列举一些技巧和快捷方式,帮助你更有效地使用 NPM。
 

快捷方式和小tips

在删除包时我们总会有所顾虑,因为其他开发人员可能也依赖于这个包。在这个情况下可以使用以下命令:

npm deprecate <pkg>[@<version range>] <message>

这个命令将包标记为已弃用,可以选择应用可以指定有关发生的情况的消息。

  • private: true 添加到 package.json,以防止意外发布任何私有仓库。

  • 快速生成 package.json 文件,请使用以下命令:npm init -y

  • 请不要删除 package.json,但可以在提交之前删除 package-lock.json

  • 在从 Git 存储库克隆项目后运行 npm install

  • 不建议将 node_modules 推送到源代码管理存储库(如 Git)。如果您使用 Git 作为版本控制,请在推送项目之前将 node_modules 添加到 .gitignore 文件。

标签:NPM,npm,package,实用,命令,json,软件包,快捷方式
From: https://www.cnblogs.com/sealio/p/17348613.html

相关文章

  • php实现网站生成桌面快捷方式
    PHP生成桌面快捷方式就是这么的简单,大家生成的时候改下你要生成的网站即可dianji.html代码:<ahref="a.php?url=www.hnzyxok.com&name=美日汇">生成左面快捷方式</a>shengcheng.php代码:<?php//网站生存左面快捷方式---功能$url=$_GET['url'];$filename=urldecode($_GET['n......
  • 上海交大软件学院课件 NPM、PYPI、DockerHub 备份
    sjtu_se_101_ics1Dockerdockerpullapachecn0/sjtu-se101-ics1dockerrun-tid-p<port>:80apachecn0/sjtu-se101-ics1#访问http://localhost:{port}查看文档PYPIpipinstallsjtu-se101-ics1sjtu-se101-ics1<port>#访问http://localhost:{port}查看文档NPMnpm......
  • TypeScript中的实用工具类型(Utility Types)
    TypeScript中的实用工具类型是一些预定义的泛型类型,可用于操作或创建其它新类型。这些实用工具类型在所有TypeScript项目中都是全局可用的,因此无需添加任务依赖项即可使用它们。1.Partial<Type>将Type的所有属性都设置为可选的类型。1interfacePerson{2name:string;......
  • Pnpm
    一、介绍pnpm 新的包管理器优势:1.安装效率高2.简洁node_modules3.避免开发使用间接依赖问题4.降低磁盘空间占用二、安装和使用:安装命令:npminstall-gpnpm检查是否安装:pnpm-v 三、扩展知识:1.文件的删除:只是将文件=指针删除了,但是实际上具体内容还存在磁盘!如果要是时间隔的很久......
  • TypeScript 的实用技巧
    TypeScript的实用技巧类型别名和接口:使用类型别名或接口可以定义复杂的数据类型,提高代码的可读性和可维护性。泛型:使用泛型可以提高代码的复用性,使代码更加灵活。非空断言操作符(!):当开发者确定一个变量或属性不为null或undefined时,可以使用非空断言操作符(!)来告诉编译......
  • 百度:baidu快捷方式
    https://www.baidu.com/ <html><head><metacharset=UTF-8"><title>百度一下,你就知道</title><scripttype="text/javascript"> window.location.href='https://www.baidu.com/';</script></head>......
  • Python 图像处理实用指南:11~12
    原文:Hands-OnImageProcessingwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN计算机视觉译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。十一、深入学习图像处理——......
  • 使用npm run dev命令,提示“npm不是内部或外部命令”
    一.安装nodejs:nodejs下载官网地址: https://nodejs.org/en/nodejs的默认安装路径是C盘。这里我把nodejs安装到D盘,D:/nodejs。除了下载地址需要更改以下,其他的选择默认,一路next即可。下载成功后,打开cmd,输入如图所示命令:node-vnpm-v二.配置环境变量: 1、在D:/nodejs(选择......
  • npm i vuex-persistedstate安装失败怎么办
    在安装vuex的插件vuex-persistedstate来支持vuex的状态持久化时,出现如下报错: 在这里给大家提供一个解决方法,输入此行命令即可成功安装:npminstall--savevuex-persistedstate-f  ......
  • Pnpm
    一、介绍pnpm 新的包管理器优势:1.安装效率高2.简洁node_modules3.避免开发使用间接依赖问题4.降低磁盘空间占用二、安装和使用:安装命令:npminstall-gpnpm检查是否安装:pnpm-v 三、扩展知识:1.文件的删除:只是将文件=指针删除了,但是实际上具体内容还存在磁盘!如果要是......