阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      npm link

      链接到包文件夹

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

      程序包链接是一个两步过程。

      首先,npm link 在包文件夹中,将在全局文件夹{prefix}/lib/node_modules/<package>中创建一个符号链接,该 链接链接到 npm link 执行命令的包。(请参阅 [npm config](/api/npm/cli/npm-config.html) 以获取的值 prefix)。它还会将包装中的所有垃圾箱链接到{prefix}/bin/{name}

      接下来,在其他位置,npm link package-name 将创建一个从全局安装 package-name 到 node_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-bloggy/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),则 link 命令必须包含该作用域,例如

      npm link @myorg/privatepackage
      
      目录
      目录