gpt4 book ai didi

npm - 将 project_name/node_modules 作为符号链接(symbolic link)?

转载 作者:行者123 更新时间:2023-12-04 12:07:09 28 4
gpt4 key购买 nike

相关:single node_modules folder for multiple projects

npm install -g不推荐一切,我不想链接单个模块,我可以符号链接(symbolic link)<some project>/node_modules到要由多个项目共享的公共(public)目录?

最佳答案

Node 可以完美地处理符号链接(symbolic link)。如何实现这一目标将取决于您的一些目标。最重要的是:对于从版本控制下载您的项目的其他开发人员,您希望有什么经验?

在设计此体验时,阅读有关 Node 模块加载算法的信息非常有帮助,可以深入了解可能的情况。

  • Official documentation
  • Explanation of require() internals

  • 一般来说,我的建议是不要关心项目之间的重复依赖。 “修复”这不值得维护成本,其中包括依赖关系僵局(子项目的需求冲突)以及在某些情况下需要自定义工具来解决您的自定义结构。

    有了这个警告,我们该怎么做?最简单的方法是创建一个封装了各种子项目的 super 项目。子项目将有效地继承 super 项目的依赖项。
    superproject/
    |-- node_modules/
    | +-- socket.io/
    |-- package.json
    |-- subprojectA/
    | |-- node_modules/
    | | +-- browserify/
    | |-- package.json
    | +-- app/
    | +-- client.js
    +-- subprojectB/
    |-- node_modules/
    | +-- express/
    |-- package.json
    +-- lib/
    +-- server.js

    此结构按您的预期工作,子项目中的文件可以 require()他们自己的模块以及 superproject/node_modules 中的任何模块,但他们不会轻易 require()其同级子项目中的模块(仍然可以通过显式路径这样做)。换句话说,client.js 可以 require() browserify 和 socket.io 没有路径,但它需要使用到 require() 的路径表达。

    其中一个重要的方面是 npm对 package.json 进行“查找”搜索并处理 node_modules 中的模块安装时作为该文件的同级目录等。这意味着您当前的工作目录需要是 superproject为了在其中安装模块,除非您的子项目没有 package.json文件。

    关于npm - 将 project_name/node_modules 作为符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36242763/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com