NPM 常用命令(十)

简介: NPM 常用命令(十)

1、npm prefix

此命令用于显示前缀

1.1 使用语法

npm prefix [-g]

1.2 描述

将本地前缀打印到标准输出。 这是包含 package.json 文件或 node_modules 目录的最近父目录,除非还指定了 -g

如果指定了 -g,这将是全局前缀的值。

1.3 示例

2、npm prune

此命令用于删除与项目无关得包。

2.1 使用语法

npm prune [[<@scope>/]<pkg>...]

首先看一下目前项目得包,如下所示:

运行 npm prune 进行处理,如下所示:

发现有部分文件无法删除,其他得安装包都已删除。再次查看,如下图所示:

2.1 描述

此命令删除 "extraneous" 包。 如果提供了包名称,则仅删除与提供的名称之一匹配的包。

无关的包是那些存在于 node_modules 文件夹中的包,它们没有被列为任何包的依赖列表。

如果指定了 --production 标志或 NODE_ENV 环境变量设置为 production,则此命令将删除你的 devDependencies 中指定的包。 设置 --no-production 将否定 NODE_ENV 设置为 production

如果使用 --dry-run 标志,则实际上不会进行任何更改。

如果使用 --json 标志,则 npm prune 所做的更改(或将使用 --dry-run 所做的更改)将打印为 JSON 对象。

在正常操作中,无关的模块会被自动修剪,因此你只需要带有 --production 标志的此命令。 然而,在现实世界中,操作并不总是 "normal"。 当发生崩溃或错误时,此命令可以帮助清理任何产生的垃圾。

3、npm publish

此命令用于发布一个包

3.1 使用语法

npm publish <package-spec>

3.2 描述

将包发布到注册表,以便可以按名称安装。

默认情况下,npm 将发布到公共注册表。 这可以通过指定不同的默认注册表或在名称中使用 scope

并结合范围配置的注册表来覆盖。

package 的解释方式与其他命令相同(如 npm install,可以是:

  • a) 包含由 package.json
    文件描述的程序的文件夹
  • b) 一个 gzipped tarball,包含 (a)
  • c) 解析为 (b) 的 url
  • d) 在注册表上发布的 <name>@<version>,带有 (c)
  • e) 指向 (d) 的 <name>@<tag>
  • f) 具有满足 (e) 的 "latest" 标签的 <name>
  • g) 解决为 (a) 的 <git remote url>

如果指定注册表中已存在包名称和版本组合,则发布将失败。

一旦使用给定名称和版本发布了一个包,该特定名称和版本组合将永远无法再次使用,即使它已被 npm unpublish删除。

npm@5 开始,在发布期间,将在发布期间将 sha1sum 和带有 sha512sum 的完整性字段提交给注册表。 后续安装将使用支持的最强算法来验证下载。

--dry-run 类似,参见 npm pack,它计算出要包含的文件并将它们打包到一个 tarball 中以上传到注册表。

包中包含的文件

要查看将包含在你的包中的内容,请运行 npm pack --dry-run。 默认情况下包含所有文件,但以下情况除外:

  • 始终包含与包安装和分发相关的某些文件。 例如,package.jsonREADME.mdLICENSE 等。
  • 如果 package.json中有 "files" 列表,则仅包含指定的文件。 (如果指定了目录,那么它们将被递归遍历并包含它们的内容,遵循相同的忽略规则。)
  • 如果有 .gitignore.npmignore 文件,则其中被忽略的文件和所有子目录都将从包中排除。 如果两个文件都存在,则忽略 .gitignore,只使用 .npmignore
    .npmignore 文件跟随 相同的模式规则为 .gitignore 文件
  • 如果文件与某些模式匹配,则永远不会包含它,除非明确添加到 package.json 中的 "files" 列表中,或者在 .npmignore 或 .gitignore文件中使用 ! 规则取消忽略。
  • 符号链接从不包含在 npm 包中。

4、npm query

4.1 使用语法

npm query <selector>

4.2 描述

npm query命令允许使用css选择器来检索依赖对象的数组。

4.3 示例

1、使用postinstall脚本查找所有依赖项并卸载它们

npm query ":attr(scripts, [postinstall])" | jq 'map(.name)|join("\n")' -r | xargs -I {} npm uninstall {}

2、找到所有git依赖项并解释谁需要它们

npm query ":type(git)" | jq 'map(.name)' | xargs -I {} npm why {}

3、查询所有依赖

npm query "*"

4、查询所有直接依赖

npm query ":root > *"

5、查询所有直接生产依赖

npm query(":root > .prod")

6、查询所有直接开发依赖

npm query(":root > .dev")

7、查询jqeury 依赖

npm query "#jquery"

8、获取特定许可证(MIT或ISC)的依赖项

npm query "[license=MIT], [license=ISC]"

9、查找所有包含@ruyadorno作为贡献者的包

:attr(contributors, [email=ruyadorno@github.com])

以上只是一些常见的示例,具体可以参考npm官网

5、npm rebuild

5.1 使用语法

npm rebuild [<package-spec>] ...]
别名: rb

5.2 描述

此命令在匹配的文件夹上运行npm build命令。当您安装新版本的节点,并且必须使用新的二进制文件重新编译所有C++插件时,这很有用。当使用--ignore-scripts--no-bin-links安装时,明确选择要构建的包并且/或链接bins也很有用。

如果提供了一个或多个包规范,则只会重建名称和版本与其中一个说明符匹配的包。

注意:使用npm-rebuild在本地系统或生产环境中重建所有npm软件包可能需要一些时间。 在某些情况下,使用npm-rebuild重建整个项目的操作甚至可能需要数小时。

6、npm repo

6.1 使用语法

npm repo [<pkgname> [<pkgname> ...]]

6.2 描述

该命令会在浏览器中打开包仓库页面。

此命令尝试猜测包的存储库 URL 的可能位置,然后尝试使用 --browser 配置 参数打开它。 如果没有提供包名,它将在当前文件夹中搜索 package.json 并使用 repository 属性。

例如打开jquery的仓库页面。

7、npm restart

7.1 使用语法

npm restart [-- <args>]

7.2 描述

这将重新启动一个项目。 相当于运行 npm run-script restart

如果当前项目在 package.json 中指定了 "restart" 脚本,则将运行以下脚本:

  1. prerestart
  2. restart
  3. postrestart

如果它没有指定 "restart" 脚本,但它确实有 stop 和/或 start 脚本,则将运行以下脚本:

  1. prerestart
  2. prestop
  3. stop
  4. poststop
  5. prestart
  6. start
  7. poststart
  8. postrestart

8、npm root

8.1 使用语法

npm root

8.2 描述

将有效的 node_modules 文件夹打印到标准输出。

在使用 node_modules 文件夹执行操作的 shell 脚本中使用 npm 很有用。 例如:

#!/bin/bash
global_node_modules="$(npm root --global)"
echo "Global packages installed in: ${global_node_modules}"

9、npm run-script

9.1 使用语法

npm run-script <command> [-- <args>]
别名: run, rum, urn

9.2 描述

这会从包的 "scripts" 对象运行任意命令。 如果没有提供 "command",它将列出可用的脚本。

run[-script] 由 test、start、restart 和 stop 命令使用,但也可以直接调用。 当包中的脚本被打印出来时,它们被分为生命周期(测试、启动、重启)和直接运行的脚本。

任何位置参数都会传递给指定的脚本。 使用 -- 传递以 - 为前缀的标志和选项,否则它们会被 npm 解析。

例如:

npm run test -- --grep="pattern"

参数只会传递给 npm run 之后指定的脚本,而不是任何 prepost 脚本。

env 脚本是一个特殊的内置命令,可用于列出脚本在运行时可用的环境变量。 如果你的包中定义了 "env" 命令,它将优先于内置命令。

除了 shell 预先存在的 PATH 之外,npm run 还将 node_modules/.bin 添加到提供给脚本的 PATH 中。 本地安装的依赖提供的任何二进制文件都可以在没有 node_modules/.bin 前缀的情况下使用。 例如,如果你的包中 tap 上有一个 devDependency,你应该写:

"scripts": {"test": "tap test/*.js"}

代替

"scripts": {"test": "node_modules/.bin/tap test/*.js"}

运行脚本的实际 shell 取决于平台。 默认情况下,在类 Unix 系统上是/bin/sh命令,在 Windows 上是 cmd.exe。/bin/sh 所指的实际外壳也取决于系统。


脚本从包文件夹的根目录运行,无论调用 npm run 时当前工作目录是什么。 如果你希望脚本根据你所在的子目录使用不同的行为,你可以使用 INIT_CWD 环境变量,它包含你在运行 npm run 时所在的完整路径。

npm runNODE 环境变量设置为执行 npmnode 可执行文件。

如果你尝试在没有 node_modules 目录的情况下运行脚本但它失败了,你将收到运行 npm install 的警告,以防你忘记了。

例如,我们会在package.json文件中,事先配置一些常用脚本,方便我们运行。

运行 npm run start 我们可以启动当前项目,可以指定命令是环境变量里面配置的,也可以指向node_modules中可运行的命令。

10、npm search

10.1 使用语法

npm search [search terms ...]
别名: find, s, se

10.2 描述

在注册表中搜索与搜索词匹配的包。 npm search 通过包元数据对注册表中的所有文件执行线性、增量、按词法排序的搜索。 如果你的终端支持颜色,它将进一步高亮结果中的匹配项。 这可以通过配置项 color 禁用

此外,使用与更多搜索词配对的 --searchopts--searchexclude 选项将包括和排除更多模式。 --searchopts 和标准搜索词的主要区别在于前者不会在输出中高亮结果,你可以使用它们进行更细粒度的过滤。 此外,你可以将这两者都添加到你的配置中以更改默认搜索过滤行为。

搜索还允许在搜索结果中定位维护者,方法是在他们的 npm 用户名前加上 =

如果一个词以 / 开头,那么它会被解释为一个正则表达式并支持标准的 JavaScript RegExp 语法。 在这种情况下,搜索将忽略尾随的 / 。 (请注意,你必须在大多数 shell 中转义或引用许多正则表达式字符。)

10.3 示例

我们尝试搜索一个包(jiang-isarray)如下所示:

npm search jiang-isarray


相关文章
|
7月前
|
JavaScript 前端开发 数据安全/隐私保护
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
详细介绍NPM的基本使用方法、常用命令和一些实用技巧
237 0
|
7月前
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
136 0
|
7月前
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
|
7月前
|
JavaScript 前端开发 Shell
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
NPM 自定义 package.json 中 scripts 命令(& 与 && 的区别,cross-env 的使用)
274 0
|
6月前
|
缓存 JavaScript 前端开发
npm命令介绍
npm命令介绍
|
5月前
|
缓存 JavaScript 前端开发
npm常用命令详解与实践
npm常用命令详解与实践
|
5月前
|
JavaScript
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
TS,编写TS文件,编写hello.ts文件,cmd下打开终端,输入tsc hello.ts会生成一个hello.js文件,简化命令,npm i -g ts-node,ts-node hello.ts
|
7月前
|
JSON JavaScript 数据安全/隐私保护
npm命令:常用npm命令及其详解!
npm命令:常用npm命令及其详解!
|
6月前
|
JavaScript
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
|
7月前
|
JavaScript Unix Shell
#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)
#! /usr/bin/env node 命令与 npm link 建立项目间软连接(一)
177 0

推荐镜像

更多