我的目标是在发布节点模块之前指定哪些文件将包含在我的节点模块中,并能够在本地测试安装。使用 package.json 中的“文件”,如果我发布我的包并安装它,那么我只会得到“文件”中指定的内容。
当我使用 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,但是如果您查看 node 模块中的内容,就会发现自述文件中使用了很多无关的文件,例如 PNG。因此,模块非常庞大。
更新:
npm install <path>
根据此处的答案和stackoverflow上的其他人,似乎尊重package.json中的“文件”。我不能代表其他系统,但在 Fedora Linux 上使用 npm v 6.9.0,这不起作用,因为所有文件仍然被复制。
例子:
如果您需要一个已发布的模块来测试此场景,我最近发布了没有依赖项的 num2cheque。如果你从 npm 注册表安装它,你会看到
npm install num2cheque
您没有收到我在本地拥有的测试目录,因为我在 package.json 中指定
"files": [lib]
将测试目录添加到本地安装,然后尝试使用带有路径的 npm link 或 npm install ,您将看到现在包含测试目录。希望能说明问题。