`npm install <folder>`的行为与`cd <folder>&amp;&amp; npm install` </folder> </folder>

时间:2014-07-23 20:31:11

标签: node.js npm

我有一个像这样的源代码树:

myapp
├── nodestuff1
|    └── package.json
└── nodestuff2
     └── package.json

nodestuff1 / package.json包括:

"prepublish": "npm install ../nodestuff2"

nodestuff2 / package.json包括:

"devDependencies": {"uglify-js": "2.3.x"}

我的工作流应该是cd myapp/nodestuff1 && npm install,应首先安装nodestuff2,然后安装nodestuff1。然而...

  • npm install中运行myapp/nodestuff2安装devDependencies,而
  • 正在运行npm install ../nodestuff2 安装devDependencies。

现在我将prepublish脚本更改为cd nodestuff2并在那里运行npm install,然后回到nodestuff1并运行npm install ../nodestuff2以便它被复制到nodestuff1/node_modules

这是一个错误吗?有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

首先,要理解&#34; cd someproject&amp;&amp ;;的语义。 npm install&#34;意味着&#34;安装一些项目的dependenciesdevDependencies,这样我就可以运行它和/或开发它&#34;而不是&#34; npm install ../someproject"这意味着&#34;在当前目录中安装someproject,以便我可以从我的项目或repl&#34;中使用它,它不会安装devDependencies。这些对我个人有意义,但对你来说可能是也可能不直观,但在任何一种情况下,这都是npm如何运作。

现在,对于你的软件包,如果我理解你要做的是在nodestuff1中将nodestuff2发布到npm时预先捆绑。不要这样做。相反,只需将nodestuff2列为dependencies中nodestuff1的nodestuff1/package.json。你想在这里做些不寻常的事吗?如果您提供了您想要完成的更大范围的上下文,那么人们更容易发布答案。我的印象是你正在努力克服npm,但你还没有为我提供足够的背景来真正评估你在做什么。