我有一个下载的module存储库,我想在本地安装它,而不是在另一个目录中全局安装?
有什么简单的方法可以做到这一点?
我有一个下载的module存储库,我想在本地安装它,而不是在另一个目录中全局安装?
有什么简单的方法可以做到这一点?
您只需向 提供一个<folder>
参数npm install
,参数应指向本地文件夹而不是包名称:
npm install /path
在本地module目录中:
$ cd ./package-dir
$ npm link
在项目目录下使用module:
$ cd ./project-dir
$ npm link package-name
或者一次性使用相对路径:
$ cd ./project-dir
$ npm link ../package-dir
这相当于在幕后使用上面的两个命令。
由于由同一个人提问和回答,我将添加一个npm 链接作为替代。
来自文档:
这对于安装您自己的东西很方便,这样您就可以对其进行处理和迭代测试,而无需不断重建。
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"
}
npm pack
+ package.json
这对我有用:
module project
,执行npm pack
:这将构建一个<package-name>-<version>.tar.gz
文件。
consumer project
理想情况下,您可以将所有此类文件放在根目录中的tmp
文件夹中consumer-project
:
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
包装:npm install
或npm i
或yarn
consumer-project's node_modules
文件夹中可用。祝你好运...
如果本地module具有您只想在项目范围内安装的对等依赖项,则这些方法(npm link
或package.json
文件依赖项)都不起作用。
例如:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
在这种情况下, npm 设置myproject
'snode_modules/
是这样的:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
当 node 加载mymodule
并执行时require('foo')
, node 解析mymodule
符号链接,然后只查找/local/mymodule/node_modules/
(及其祖先) for foo
,它没有找到。相反,我们希望 node 在 中查找/local/myproject/node_modules/
,因为这是从哪里运行我们的项目以及foo
安装在哪里。
所以,我们要么需要以某种方式告诉节点不解决这个符号链接寻找的时候foo
,或者我们需要一种方法来告诉NPM安装一个副本的mymodule
时候文件相关的语法中使用package.json
。不幸的是,我也没有找到办法:(