我的目标是在发布之前指定我的节点模块中包含哪些文件,并能够在本地测试安装。使用package.json中的“files”,如果我发布我的包并安装它,那么我只得到“files”中指定的内容。
当我使用npm链接时不是这种情况。无论是package.json中的“文件”还是.npmignore,npm链接似乎总能给我每个文件。如何在本地测试我的模块安装?
例如:
cd ~/projects/node-redis # go into the package directory
npm link # creates global link
cd ~/projects/node-bloggy # go into some other package directory.
npm link redis # link-install the package
如果〜/ projects / node-redis在其package.json中有“files:[lib]”,那么在运行“npm link redis”之后,你会期望只有lib出现在〜/ projects / node-bloggy中,但是事实并非如此。
除了: 我喜欢node和npm,但是如果你看看你的节点模块中有什么,那么自述文件中使用的PNG就会有很多无关的文件。由于这个原因,模块非常庞大。
答案 0 :(得分:6)
npm install
GIT存储库URL 您可能想从GIT存储库中安装软件包,例如
npm install https://github.com/AndreasPizsa/parse-decimal-number.git
这是一个实际的npm install
,它尊重files
条目,即使该软件包尚未发布到npm存储库中。
npm link
不复制,它创建一个链接 npm link
不会不通过将软件包复制到目标文件夹中来实际安装该软件包。
相反,它会创建到源文件夹的符号链接,这就是为什么您看到源文件夹中所有文件的原因(“ node-redis”),而不仅仅是在files
。
npm link
文档中记录了此行为:
首先,包文件夹中的npm链接将在 全局文件夹{prefix} / lib / node_modules /链接到 执行npm link命令的软件包。 (有关详细信息,请参见npm-config 前缀的值)。它还会将包装中的所有垃圾箱链接到 {prefix} / bin / {name}。
接下来,在其他位置,npm link package-name将创建一个 从全局安装的程序包名称到node_modules /的符号链接 当前文件夹。
“什么是符号链接?” ,您可能会问:
符号链接(也称为符号链接或软链接)是任何文件的术语,该文件以绝对或相对路径的形式包含对另一个文件或目录的引用,并且会影响路径名的解析。
如果您担心的是硬盘空间的使用,不用担心-复制或复制任何内容,仅链接(就像链接到Wikipedia不会重复一样,实际上可以节省空间)
npm install
npm install
还将创建指向相关包的符号链接。一个有用的方案可能是仍在开发中的模块。
cd ~/projects/node-bloggy
npm install ~/projects/node-redis
这将在您的node_modules
项目的node-bloggy
下创建一个符号链接。