我有一个下载的模块repo,我想在本地安装它,而不是全局安装在另一个目录?
有什么简单的方法吗?
我有一个下载的模块repo,我想在本地安装它,而不是全局安装在另一个目录?
有什么简单的方法吗?
当前回答
你只需要给NPM install提供一个<folder>参数,参数应该指向本地文件夹而不是包名:
npm install /path
其他回答
你只需要给NPM install提供一个<folder>参数,参数应该指向本地文件夹而不是包名:
npm install /path
对于npm的最新版本(我在macOS Big Sur下使用8.1.3),命令序列甚至更容易…
cd /path-where-your-local-project-is/
npm init
这将要求您提供一些与项目相关的数据,并正确初始化您的项目。json文件。
一旦完成,你可以安装额外的模块:
cd /path-where-your-local-project-is/
npm install --save-dev some-npm-module .
这就是你所需要的!
注意:我相信如果你在项目目录中,后面的点是不必要的,但我也认为添加它没有坏处:-)
(我想知道为什么官方文件仍然没有解释这一点…)
我遇到了不同的解决方案,而不是上面安装自定义构建包ckedor5。
所以我上传包到应用程序根目录,比:
npm add file:./ckeditor5
在我的包裹里。Json包被列为一个文件:
"ckeditor5-custom-build": "file:ckeditor5",
我认为这个答案可能与如何添加本地包的主题相关。
这两种方法(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的node_modules/:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
当node加载mymodule并且它确实需要('foo')时,node解析mymodule符号链接,然后只在/local/mymodule/node_modules/(及其祖先)中查找foo,但它没有找到。相反,我们希望node查找/local/myproject/node_modules/,因为这是我们运行项目的地方,也是安装foo的地方。
因此,我们要么需要一种方法告诉node在查找foo时不要解析这个符号链接,要么需要一种方法告诉npm在package.json中使用文件依赖语法时安装mymodule的副本。不幸的是,我还没有找到这样做的方法:(
NPM pack + package.json
这对我来说很管用:
步骤1:在模块项目中,执行npm pack:
这将构建一个<package-name>-<version>.tar.gz文件。
步骤2:将文件移动到使用者项目
理想情况下,你可以把所有这些文件放在你的消费者-项目根目录下的tmp文件夹中:
步骤3:在package.json中引用它:
"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
第四步:安装包:
NPM安装或NPM I或纱线
现在,您的包可以在您的消费者项目的node_modules文件夹中使用。
祝你好运…