有没有办法只使用node / npm下载当前目录中的模块?

时间:2016-10-10 09:21:02

标签: node.js npm npm-install

我正在寻找一种方法将模块或GitHub存储库安装到当前目录中,而不是将其放在node_modules文件夹中。例如:

npm install gituser/hismodule

hismodule和依赖项安装在node_modules中。但是我想将模块放在当前目录中,并且只将它的依赖项放在node_modules中。

这也可以通过两个命令来完成。一个用于安装模块,另一个用于安装依赖项。有没有办法这样做?

到目前为止我还没找到任何东西。对我来说,唯一可行的解​​决方法是使用wget从GitHub下载zip文件并使用unzip。但我想通过一个已知的标识符来做到这一点......

2 个答案:

答案 0 :(得分:1)

我不认为你可以通过npm这样做,我不认为这是正确的做法。 git子模块更适合这样的事情。您可以将git存储库定义为存储库的子模块,每次克隆主存储库时,它也将克隆子模块。他们在一起工作得很好。您可以查看此官方文档:

https://git-scm.com/book/en/v2/Git-Tools-Submodules

这篇文章也非常有用:

  

子模块的概念很棒。它基本上允许你   将外部存储库附加到特定的另一个存储库中   路径。为了说明子模块的价值,它可能会   帮助我解释我是如何使用它们的。

https://chrisjean.com/git-submodules-adding-using-removing-and-updating/

<强> 更新

你可以拥有类似的东西,而不是给他们一个zip文件。创建一个package.json文件并将其提供给它们。在那里,添加作为依赖项的root,并定义postinstall脚本。这样的事情:

{
  "name": "your-dummy-packagejson",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "postinstall": "mv node_modules/your-project ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "your-project-dependency": "1.0.0"
  }
}
  • 他们将这个package.json保存在他们的电脑中
  • 他们运行npm install
  • 安装完成后,postinstall挂钩将运行,它将执行mv node_modules/your-project .命令。
  • 您的项目准备就绪:)

答案 1 :(得分:0)

您可以尝试使用前缀选项:

npm install --prefix <path/to/prefix_folder> -g