Articles of 节点模块

防止要求(…)查找父目录中的模块

我的Node项目的根目录位于一个本身是另一个Node项目的根目录中。 所以这两个文件夹都包含package.json和node_modules 。 问题是在内部项目中,有时候我require在这个项目中没有安装的模块。 但是Node只是默默地在父项目的node_modulesfind它们,这导致令人讨厌的惊喜。 我能以某种方式阻止它这样做吗? 我不想改变项目的目录结构,除非它是唯一的解决scheme。

将可选parameter passing给require()

所以,我有这个问题 – 当我有JavaScript或节点的问题不可避免地是我的编码是问题;) 所以在嘲笑的风险,这是问题: 我有一个模块,它有一个可选的参数configuration 使用标准模式,这是我有: module.exports = function(opts){ return { // module instance }; } 在调用代码中有这个 var foo = require('bar')({option: value}) 如果没有选项可以通过,代码如下所示 var foo = require('bar')({}) 这有点看起来丑陋 所以,我想这样做 var foo = require('bar') 这不起作用,因为出口是函数调用 所以,到这个问题的肉 a)有没有办法达到这个崇高的目标? b)将parameter passing给模块有更好的模式吗? 非常感谢 – 而且我希望一旦笑声过去了,您将能够以我的方式发送一些帮助:)

当我改变git分支时切换node_modules文件夹

我正在与两个分支, master和feature-1 在master分支中,我使用的是lib xyz@1.0 在分支feature-1我已经安装了lib xyz 2.0版本的新版本 feature-1在master分支上没有被合并,因为它没有完成。 然后,当我切换到master再次我要重新安装lib@1.0 ,如果我再次切换到feature-1我必须重新安装lib@2.0 这些案例中最好的工作stream程是什么?

在模块内调用Node.js模块function

我正在尝试编写一个节点模块来清理我的代码,并将其分离到不同的文件中。 考虑下面的代码: module.exports = { Hello : function(request, reply) { return reply("Hello " + World()); }, World : function() { return "World"; } } 如果我导入上面的模块,并使用Hello函数作为特定路由的处理程序,我得到一个HTTP 500内部服务器错误。 如果我将Hello函数更改为,我将问题缩小到对World()的调用 Hello : function(request, reply) { return reply("Hello World"); } 然后,它工作正常,所以它似乎是从调出导出对象内的另一个函数绊倒 有谁知道为什么会发生这种情况,以及如何解决?

有没有替代npm-check-updates模块?

我正在考虑使用npm-check-updates模块将node_modules更新到最新版本。但是由于安装后的大尺寸(接近25mb),我正在寻找这个模块的其他替代scheme。

实际上排除文件发布没有validation它

我试图发布一个纯粹的客户端项目 – 这是 – 纯html / js / css文件,在开发过程中由nodejspipe理。 节点创build一个非常深的path(超过260个字符) – 在node_modules / …内 尽pipe我完全排除了node_modules: <ExcludeFoldersFromDeployment>test;node_modules</ExcludeFoldersFromDeployment> 我尝试发布时仍然会引发exception: Error 1 The "CollectFilesinFolder" task failed unexpectedly. System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 […]

在节点模块内共享“全局”variables是一种很好的方法吗?

我怎样才能轻松地引用我的模块中的其他目录没有明确的相对path( ../../../lib.. )? 我正在编写一个节点模块,我想在模块中重用一些全局的东西。 最基本的 – 我想设置模块的根path为“全局”,所以我可以很容易地调用其他来源,而不使用大量的相对path../../和类似的东西。 这会导致代码混乱,如果项目结构发生变化,很容易出错或错过。 所以我在这篇 文章和其他一些库中看到了很多选项来处理这些事情(比如给出根path的模块 – app-module-path , rootpath , rfr等),但是他们都指向一个基础项目/应用程序,而不是其他人正在使用的模块。 设置全局是一个坏主意,我明白,一个环境variables也不是一个好主意。 对这件事情有一个好的做法吗? 也许有些事我没有find或听说过。 以下是我想要避免的以及我正在寻找的一个示例: // avoid things like that: // ./lib/something/forthat/doit.js var config = require('../../../config/project/type1/config.js'); // ./config/project/type1/config.js module.exports = { msg: 'hi' }; // find somethings like that: // when the root path/require can be found in every location […]

是否有可能有一个单独的devDependencies node_modules文件夹?

我有一个Node应用程序,我正在部署到Heroku。 他们的文档说最好的做法是检查你的node_modules目录 (即不要 gitignore它),更快的部署和dev / prod奇偶校验。 在我的package.json ,我有大量的devDependencies (主要是Grunt插件和所有的devDependencies )和一些像Express一样的常规生产dependencies 。 Heroku只需要生产部门。 我宁愿不检查所有的开发代码,因为它们大约有50MB。 有什么办法可以为你的开发人员提供一个单独的文件夹,例如node_modules_dev ? 如果这是可能的,那么我可以将node_modules_dev添加到我的.gitignore ,并根据Heroku的build议检入常规生产node_modules目录。 有没有办法做到这一点? 或者你能想出另一种方法去做我想做的事情吗?

如何在准备部署时清理node_modules文件夹

在准备部署代码时,我将如何去清理node_modules文件夹。 我正在制作一个使用node-webkit的应用程序,并且由于解压缩过程需要一些时间,所以在捆绑应用程序的最终版本时,希望包含最less量的文件。 我已经看过npm dedupe和使用npm install –production生产摆脱重复和只提取生产文件,但我仍然留有Readme文件, benchmarks , tests和生成文件,我不需要。 我想结束node_modules文件夹中的每个模块是一个LICENSE文件,如果它存在, package.json和其他任何我需要的模块运行,但没有更多。 问题: 如何自动清理一个SCM提交的node_modules目录是朝着相同的方向,但它是谈论提交,所以不是真正的我正在寻找。 这个问题: NPM清理模块与我的相同,但不完全相同。 这个答案有帮助,因为它是捆绑最终应用程序的dedupe更有效的版本。 更新 我试图从这里链接的自定义模块,但它似乎并没有正常工作,即使经过一些摆弄。 尽pipe如此,我还没有find正确的答案呢。 这是我正在寻找的一个例子。 在我的项目中,我目前有两个依赖项: socket.io和socket.io-client 。 他们一起组成了15个文件夹中的550个文件。 手动清理readme makefile , makefile , VC++构build文件,如.pdb和.obj以及其他不必要的文件我可以缩小到2.74 MB的 73个文件夹中的265个文件。 这只有两个模块。 我想知道是否有办法自动执行此操作,最好使用npm 。

在同一个Package.json文件中注明多个模块

我试图打包一些我一直在努力的模块。 我有五个模块,分成五个文件。 其中四个是我希望用户能够安装的实际的外向模块。 另一个是支持模块,他们都需要正常工作。 它们都存储在同一个目录中。 我希望能够将每个指定为同一个目录中的独立模块。 但据我所知,只能在package.json定义一个模块。 有没有办法指定多个模块? 否则,这意味着这是一个不好的做法。 我应该如何构build我的模块的出口,将其移动到一个主模块?