我有一个像这样的源代码树:
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
。
这是一个错误吗?有更好的解决方案吗?
答案 0 :(得分:0)
首先,要理解" cd someproject&&amp ;;的语义。 npm install"意味着"安装一些项目的dependencies
和devDependencies
,这样我就可以运行它和/或开发它"而不是" npm install ../someproject"这意味着"在当前目录中安装someproject,以便我可以从我的项目或repl"中使用它,它不会安装devDependencies
。这些对我个人有意义,但对你来说可能是也可能不直观,但在任何一种情况下,这都是npm如何运作。
现在,对于你的软件包,如果我理解你要做的是在nodestuff1中将nodestuff2发布到npm时预先捆绑。不要这样做。相反,只需将nodestuff2列为dependencies
中nodestuff1的nodestuff1/package.json
。你想在这里做些不寻常的事吗?如果您提供了您想要完成的更大范围的上下文,那么人们更容易发布答案。我的印象是你正在努力克服npm,但你还没有为我提供足够的背景来真正评估你在做什么。