子文件夹中的 Node.js npm 依赖项

Posted

技术标签:

【中文标题】子文件夹中的 Node.js npm 依赖项【英文标题】:Node.js npm dependencies in subfolder 【发布时间】:2014-11-12 23:03:06 【问题描述】:

我有一个使用 node-webkit 的项目。 node-webkit 允许使用 npm 包来开发桌面应用程序。我使用 grunt 来构建我的应用程序。

目前我的文件夹结构是这样的:

project root
    node_modules/ (1)
    package.json  (1)
    App/
        node_modules/ (2)
        package.json  (2)
        bower.json
        bower_components/
        ... 
        controllers/
        filters/
        ...
        app.js

应用程序本身的 npm 依赖项保存在 App 文件夹中,但 building 项目的 dev 依赖项与应用程序源代码无关,所以我将它们保存在根文件夹内的 node_modules (1) 中。我也知道在 package.json 文件中可以表达依赖关系和 dev 依赖关系,正是出于这个原因。我宁愿在根目录中有一个 package.json 文件来表达所有依赖项,包括开发依赖项,但我宁愿在文件夹级别分离这些依赖项。

出现两个问题:

    这是组织我的 npm 依赖项的好方法吗?如果是的话,很棒吗?如果不是,我希望:

    有什么更好的方式来组织我的依赖项?是否可以指定 dev 依赖项进入文件夹 a,而“常规”依赖项进入文件夹 b?如果是这样,我该怎么做?

如果有人想知道,这就是我正在谈论的项目:

https://github.com/michahell/pinbored-webkit

[为清晰起见更新了文件夹结构以包含 app.js]

【问题讨论】:

为什么感谢你这么快就编辑我的问题@marc_s! 大部分工作都是由@mscdex 处理的——他在我能够修复之前得到了dependency(而不是dependancy)... 我 *&%$ 总是写错(和其他一些东西)。会小心的:) @Michael 你找到解决方案了吗?我想使用和你一样的结构,在外面有开发依赖,在 App 文件夹里面有应用依赖,但我很犹豫要不要拆分我的package.json 你好@Jorn,不,我没有,我维护了 2 个 package.json 文件。我想我在 (main/dev) package.json 中有一个脚本,它执行 cd App && npm install,因此您只需执行一次 npm install。不过我还是不喜欢……如果你找到更好的解决方案,请告诉我! 【参考方案1】:

@Michael package.json 文件包含与该项目相关的所有依赖项。不需要多个包文件和多个 node_modules 文件夹。 但是你需要检查你的 App.js 文件在哪里!! 您的 App.js 、 package.json 必须在同一个文件夹中,除非已配置

【讨论】:

谢谢,@anirudh,我已根据您的回答更新了我的问题。我的 app.js 在 /App 文件夹中,我想保持这种状态,所有应用程序特定的东西都在我的 /App 文件夹中! @Michael 我认为您现在不需要外部 package.json 和外部 node_module 文件夹! :) 我确实需要它,因为我正在使用 Grunt 构建我的 node-webkit 应用程序,而 grunt 需要 npm 依赖项(在我的情况下是开发依赖项)。【参考方案2】:

为一个项目保留多个package.json 文件和多个node_module 目录是完全可以的。 如果您将部件视为单独的组件。

一个例子可能是,如果您有一个目录包含节点服务器,另一个目录包含一个 react 应用程序,第三个目录包含某种用 javascript 编写的部署脚本。

【讨论】:

以上是关于子文件夹中的 Node.js npm 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node 8.9.4 LTS 安装 Sails.js 依赖项时,NPM“ENOENT:没有此类文件或目录错误”

npm install:有没有办法忽略 package.json 中的特定依赖项

有没有办法从 .js 文件自动安装 node.js 依赖项?

如何在 node.js 中卸载具有开发依赖项的 npm 模块?

node项目怎么在离线环境生成容器镜像

无法在 Windows 10 上安装 NPM 依赖项