Answers:
在本地模块目录中:
$ cd ./package-dir
$ npm link
在要使用模块的项目目录中:
$ cd ./project-dir
$ npm link package-name
或一次性使用相对路径:
$ cd ./project-dir
$ npm link ../package-dir
这等效于在幕后使用上面的两个命令。
npm link
将创建外部依赖项的第二个实例。所以,如果你有一个包,需要B和C,B需要C.连接B就导致应用程序A有C的两个实例
您只需为提供一个<folder>
参数npm install
,则该参数应指向本地文件夹而不是包名称:
npm install /path
rm -rf node_modules
之前和npm install
之后都很好。
由于是由同一个人询问和回答的,因此我将添加一个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 link
对文件夹运行一次(以创建全局符号链接),然后npm link package-name
在项目的文件夹中运行(以在项目中使用全局符号链接)。下面的答案是正确的答案。
file:
方法)允许我的应用程序和本地模块共享依赖项。我对的测试npm link
导致了重复的依赖关系,如果需要将依赖关系作为单例使用,则会造成破坏。
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
文件夹中可用。祝好运...
如果本地模块具有仅在项目范围内安装的对等依赖项,则这些方法(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"
}
在这种情况下,故宫建立myproject
的node_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
。不幸的是,我也没有找到一种方法可以做:(
NODE_PATH
为指向node_modules/
哪里foo
安装。因此,对于上述情况,将是这样: NODE_PATH=/dev/myproject/node_modules/
允许mymodule
find foo
。
正如先前的人们所回答npm --save ../location-of-your-packages-root-directory
。该../location-of-your-packages-root-directory
但是必须有两件事情,以便为它工作。
1)package.json
在该目录中指向
2)main
在属性package.json
必须被设置和工作IG "main": "src/index.js",
是否为入口文件../location-of-your-packages-root-directory
就是../location-of-your-packages-root-directory/src/index.js