阅读(1784) (11)

npm 链接 link

2021-09-06 14:36:32 更新

符号链接包文件

概要

npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]


alias: npm ln

描述

包链接是一个两步过程。

首先,npm link在包文件夹中将在全局文件夹{prefix}/lib/node_modules/<package>中创建一个符号链接,该符号 链接链接到npm link执行命令的包。(npm-config有关的值,请参阅prefix)。它还会将包中的任何 bin 链接到{prefix}/bin/{name}`.

接下来,在其他位置,npm link package-name将创建从全局安装package-namenode_modules/ 当前文件夹的符号链接。

请注意,package-name取自package.json,而不是来自目录名称。

包名称可以选择性地以范围为前缀。见npm-scope。范围必须以@-符号开头,后跟斜杠。

创建 tarball 时npm publish,链接的包通过解析符号链接“快照”到它们的当前状态。

这对于安装您自己的东西非常方便,这样您就可以对其进行处理和迭代测试,而无需不断重建。

例如:

cd ~/projects/node-redis    # go into the package directory
npm link                    # creates global link
cd ~/projects/node-bloggy   # go into some other package directory.
npm link redis              # link-install the package

现在,对 ~/projects/node-redis 的任何更改都将反映在 ~/projects/node-blogger/node_modules/node-redis/ 中。请注意,链接应指向包名称,而不是该包的目录名称。

您也可以将两个步骤合二为一。例如,要以更短的方式执行上述用例:

cd ~/projects/node-bloggy  # go into the dir of your main project
npm link ../node-redis     # link the dir of your dependency

第二行相当于做:

(cd ../node-redis; npm link)
npm link redis

也就是说,它首先创建一个全局链接,然后将全局安装目标链接到您项目的node_modules文件夹中。

请注意,在这种情况下,您指的是目录名称node-redis,而不是包名称redis

如果你的链接包有范围(请参阅npm-scope),你的链接命令必须包含该范围,例如

npm link @myorg/privatepackage

警告

请注意,默认情况下不会保存以 这种方式链接的包依赖项package.json,假设目的是让链接代替常规的非链接依赖项。否则,例如,如果您依赖redis@^3.0.1, 并运行npm link redis,它会将^3.0.1依赖替换为file:../path/to/node-redis,而您可能不想要!此外,如果您项目中的其他用户或开发人员的文件夹设置与您的文件夹设置不完全相同,则会遇到问题。

如果要添加新的依赖项作为链接,则应通过运行将其添加到相关元数据中npm install <dep> --package-lock-only

如果您想将file:参考保存在您的package.json和 package-lock.json文件中,您可以使用它npm link <dep> --save来执行此操作。

工作区使用

npm link <pkg> --workspace <name>将相关包链接为指定工作区的依赖项。请注意node_modules,如果没有冲突的依赖项,它实际上可能链接到父项目的文件夹中。

npm link --workspace <name> 将创建到指定工作区的全局链接。

配置

save 保存

  • 默认值:true
  • 类型:Boolean

将已经安装的包作为依赖项保存到 package.json 文件中。

npm rm 命令一起使用时,从 package.json 中删除依赖项。

save-exact 另保存

  • 默认值:false
  • 类型:Boolean

保存到 package.json 的依赖项将使用确切的版本进行配置,而不是使用 npm 的默认 semver 范围运算符。

global 全局

  • 默认值:false
  • 类型:Boolean

在“全局”模式下运行,以便将包安装到 prefix 文件夹而不是当前工作目录中。有关行为差异的更多信息,可以参阅文件夹

  • 软件包安装到{prefix}/lib/node_modules文件夹中,而不是当前工作目录中。
  • bin文件链接到{prefix}/bin
  • 手册页连接到{prefix}/share/man

global-style 全局风格

  • 默认值:false
  • 类型:Boolean

使 npm 以node_modules与全局node_modules文件夹相同的布局将包安装到本地文件夹中。只有您的直接依赖项会显示在其中,node_modules并且它们所依赖的所有内容都将在其node_modules文件夹中展平。这显然会消除一些重复数据删除。如果与 一起使用legacy-bundlinglegacy-bundling 将是首选。

legacy-bundling 遗留捆绑

默认值:假类型:布尔型使 npm 安装包,以便 1.4 之前的 npm 版本,例如 node 0.8 中包含的版本,可以安装该包。这消除了所有自动重复数据删除。如果与global-style此选项一起使用将是首选。

strict-peer-deps 严格的对等关系

  • 默认值:false
  • 类型:Boolean

如果设置为true,并且--legacy-peer-deps未设置,则任何 冲突peerDependencies都将被视为安装失败,即使 npm 可以根据非对等依赖关系合理猜测适当的解决方案。

默认情况下,peerDependencies依赖关系图中的深层冲突将使用最近的非对等依赖项规范来解决,即使这样做会导致某些包接收在其包peerDependencies对象中设置的范围之外的对等依赖项。

当执行此类和覆盖时,会打印警告,解释冲突和所涉及的包。如果--strict-peer-deps设置,则此警告被视为失败。

package-lock 包锁

  • 默认值:true
  • 类型:Boolean

如果设置为 false,则package-lock.json在安装时忽略文件。如果为真,这也将阻止写入 。package-lock.json``save

当包包锁被禁用时,无关模块的自动修剪也将被禁用。要删除禁用包锁的无关模块,请使用npm prune.

omit 省略

  • 默认值:如果NODE_ENV环境变量设置为production,则为dev,否则为null
  • 类型:devoptionalpeer(可多次设置)

要从磁盘上的安装树中省略的依赖项类型。

请注意,这些依赖的仍然解决,加入 package-lock.jsonnpm-shrinkwrap.json文件。它们只是没有物理安装在磁盘上。

如果包类型同时出现在--include--omit列表中,则它将被包括在内。

如果生成的省略列表包含'dev',则NODE_ENV环境变量将被设置'production'为所有生命周期脚本。

ignore-scripts 忽略脚本

  • 默认值:false
  • 类型:Boolean

如果为 true,则 npm 不会运行 package.json 文件中指定的脚本。

请注意,明确用于运行特定脚本的命令,例如 npm startnpm stopnpm restartnpm test, 并且npm run-script 如果ignore-scripts已设置仍将运行其预期脚本,但它们不会运行任何前置或后置脚本。

audit 审计

  • 默认值:true
  • 类型:Boolean

当为true时,将审计报告与当前 npm 命令一起提交到默认注册表和为范围配置的所有注册表。

bin-links

  • 默认值:true
  • 类型:Boolean

告诉 npm.cmd为包可执行文件创建符号链接(或Windows 上的垫片)。

设置为 false 使其不这样做。这可以用来解决一些文件系统不支持符号链接的事实,即使在表面上是 Unix 系统上。

fund 资金

  • 默认值:true
  • 类型:Boolean

当“true”在每个结尾处显示消息时,npm install 确认正在寻找资金的依赖项的数量。

dry-run 试运行

  • 默认值:false
  • 类型:Boolean

表示你不希望 npm 进行任何更改并且它应该只报告它会做的事情。这可以被传递到任何修改本地安装,例如,命令的installupdate, dedupeuninstall,以及packpublish

注意:这不是由其他网络相关的命令,如兑现dist-tags, owner等等。

workspace 工作区

  • 默认:
  • 类型:String(可多次设置)

允许在当前项目的已配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。

workspace配置的有效值为:

  • 工作区名称
  • 工作区目录的路径
  • 父工作区目录的路径(将导致选择所有嵌套工作区)

为该npm init命令设置时,可以将其设置为尚不存在的工作区的文件夹,以创建该文件夹并将其设置为项目中的全新工作区。

此值不会导出到子进程的环境中。

workspaces 工作区

  • 默认值:false
  • 类型:Boolean

启用在所有已配置工作区的上下文中运行命令。

此值不会导出到子进程的环境中。