如何强制npm不创建本地包的符号链接?

问题描述 投票:0回答:2

我下载了 npm 包的本地副本并将其解压到桌面上。 然后我用

npm install /directory/
来安装它。

我注意到,当我删除桌面目录时,应用程序说它找不到已安装的模块。经过进一步调查,我注意到该包位于

node_modules
中,但它旁边有箭头,上面写着“符号链接”,我认为这是指向该包的桌面目录的链接。

如何独立安装它,以便它完全包含在node_modules中,从而允许我删除桌面副本?

node.js npm npm-install npm-package
2个回答
9
投票

原来你可以用

npm pack /path/to/package

这将导致 npm 将包打包到

.tgz
文件中。 然后您可以使用标准
.tgz

文件安装它
npm install /path/to/file.tgz

这将强制 npm 在

node_modules
中创建一个本地副本,而无需符号链接


0
投票

为了构建 ablaszkewicz1 的出色答案,解决方案是使用

npm pack
创建 tarball,然后使用
npm install
tarball。然而,tarball 的名称会根据包是否命名空间而有所不同,因此将其放入 shell 别名中有点棘手。

这里有一个方便的 bash 脚本,可以在您需要时随时执行此操作:

#!/bin/bash

mkdir -p /tmp/$$ &&
npm pack --pack-destination=/tmp/$$ $1 &&
NAME=`ls /tmp/$$/*tgz` &&
npm install $NAME &&
rm -rf /tmp/$$

用途:

try ../apostrophe

这将在当前项目文件夹中的相邻文件夹

../apostrophe
中安装模块。

© www.soinside.com 2019 - 2024. All rights reserved.