2013-05-18 61 views
1

我想我的第一个模块发布到NPM,它呈现降价与EJS模板,它使用标志着其他两个NPM模块和EJS,我有这些在我的package.json文件相关。我有一个.gitignore文件,其中包含我的node_modules目录以及一个.npmignore文件,该文件为空。如何在发布到NPM时包含其他NPM模块?

我已成功发布到npm。

然而,当我尝试把它变成一个测试应用程序的package.json,做npm install -d它安装到安装我的模块,但它不安装它的依赖,如果我进入测试程序根node_modules目录,然后进入我的新发布的模块的安装目录,它没有安装任何它的依赖项,它没有自己的嵌套的node_modules目录。

应该有办法让我的模块的依赖关系安装正确,当我将express作为依赖包时,它会安装自己的node_modules文件夹,并且安装了connect和其他模块,我想和其他两个模块一样npm模块。

我知道它是否会安装其嵌套node_modules依赖它的工作,我这样做时,它的工作原理。

$ npm install -d 
$ cd node_modules/my_module 
$ npm install -d 
$ cd ../.. 
$ node app 

编辑:这里是对GitHub repo一个链接,我的模块,而这里是package.json

编辑:注意,这仅仅发生在我有我的依赖标记EJS已经安装在我的测试应用程序。当我然后安装我的模块时,它没有在其自己的node_modules目录中安装标记和ejs。但是,如果我从测试应用程序中删除所有模块并只安装我的模块,它将安装它们。无论如何,无论我的依赖项是否已经事先安装,它都能正常工作。

+0

你可以发布'package.json'内容吗? –

+0

@AlbertoZaccagni添加链接 –

+2

我刚安装了你的包,结果被安装了所有DEPS ... NPM 1.2.18和节点v0.10.6 –

回答

1

它应该都是“正常工作”。

NPM不安装任何新的模块,因为它认为目前已经处于较高的水平在node_modules目录中相应的模块。由于节点的require将查找树中,尝试为每个目录的node_modules subdir,您的模块的require语句将工作,没有它自己的node_modules目录。

如果要安装在不已经安装了正确的依赖任何地方的模块,他们将模块自身node_modules目录下安装。阿尔贝托证实了这一点。

你可能想,虽然指定的package.json依赖的一个更具体的版本。这将确保您的模块可以使用您测试过的依赖项的版本。

+0

阅读完本文后,我再对它进行了捣乱,再次卸载了所有的依赖关系,安装了它们,它按照您的说法工作。不知道之前有什么错。它无法要求模块。 –

相关问题