使用npm安装本地模块?

javascript node.js npm packages npm-install

139789 观看

4回复

我有一个下载的模块仓库,我想在本地安装,而不是全局安装在另一个目录中?

有什么简单的方法可以做到这一点?

作者: fancy 的来源 发布者: 2019 年 6 月 9 日

回应 (4)


380

npm-link文档

在本地模块目录中:

$ cd ./package-dir
$ npm link

在要使用该模块的项目目录中:

$ cd ./project-dir
$ npm link package-name

或者一次性使用相对路径:

$ cd ./project-dir
$ npm link ../package-dir

这相当于使用上面的两个命令。

作者: Rich Apodaca 发布者: 13.09.2013 04:49

286

决定

你只需要提供一个<folder>参数npm install,参数应该是本地文件夹而不是包名:

npm install /path
作者: fancy 发布者: 11.11.2011 02:35

119

由于同一个人的询问和回答,我将添加一个npm链接作为替代。

来自docs:

这对于安装自己的东西很方便,因此您可以对其进行处理并迭代测试,而无需不断重建。

cd ~/projects/node-bloggy  # go into the dir of your main project
npm link ../node-redis     # link the dir of your dependency

[编辑]从NPM 2.0开始,您可以在package.json中声明本地依赖项

"dependencies": {
    "bar": "file:../foo/bar"
  }
作者: Luke W 发布者: 28.06.2013 07:10

0

如果本地模块具有您只想在项目范围内安装的对等依赖项,则这些方法(npm linkpackage.json文件依赖性)都不起作用。

例如:

/local/mymodule/package.json:
  "name": "mymodule",
  "peerDependencies":
  {
    "foo": "^2.5"
  }

/dev/myproject/package.json:
  "dependencies":
  {
    "mymodule": "file:/local/mymodule",
    "foo": "^2.5"
  }

在这种情况下,故宫建立myprojectnode_modules/是这样的:

/dev/myproject/node_modules/
  foo/
  mymodule -> /local/mymodule

当节点加载mymodule它时require('foo'),节点会解析mymodule符号链接,然后只查找/local/mymodule/node_modules/(和它的祖先)foo,它找不到它。相反,我们希望节点查看/local/myproject/node_modules/,因为这是运行我们的项目的位置,以及foo安装的位置。

所以,我们要么需要以某种方式告诉节点解决这个符号链接寻找的时候foo,或者我们需要一种方法来告诉NPM安装一个副本mymodule时候文件相关的语法中使用package.json。不幸的是,我还没有办法做到这一点:(

作者: Paul Medynski 发布者: 08.11.2018 08:12
32x32