问题标签 [npmignore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - npm 链接不关心 package.json 或 .npmignore 中的“文件”
我的目标是在发布节点模块之前指定哪些文件将包含在我的节点模块中,并能够在本地测试安装。使用 package.json 中的“文件”,如果我发布我的包并安装它,那么我只会得到“文件”中指定的内容。
当我使用 npm 链接时,情况并非如此。无论是 package.json 中的“文件”还是 .npmignore,npm 链接似乎总是给我每个文件。我怎样才能像这样在本地测试我的模块安装?
前任:
如果 ~/projects/node-redis 在它的 package.json 中有 "files: [lib]",你会期望在运行 "npm link redis" 之后只有 lib 出现在 ~/projects/node-bloggy 中,但这不是案子。
顺便说一句:我喜欢 node 和 npm,但是如果您查看 node 模块中的内容,就会发现自述文件中使用了很多无关的文件,例如 PNG。因此,模块非常庞大。
更新:
根据此处的答案和stackoverflow上的其他人,似乎尊重package.json中的“文件”。我不能代表其他系统,但在 Fedora Linux 上使用 npm v 6.9.0,这不起作用,因为所有文件仍然被复制。
例子:
如果您需要一个已发布的模块来测试此场景,我最近发布了没有依赖项的 num2cheque。如果你从 npm 注册表安装它,你会看到
您没有收到我在本地拥有的测试目录,因为我在 package.json 中指定
将测试目录添加到本地安装,然后尝试使用带有路径的 npm link 或 npm install ,您将看到现在包含测试目录。希望能说明问题。
git - NPM - 从安装中排除部分依赖项
我有一个问题,它来自我用另一个替换 bootstrap.min.css 的事情。我调整了 .gitignore ,在 github repo 上只有 /node_modules/bootstrap/dist/css/bootstrap.min.css 来自所有依赖项。但是在克隆 repo 并使用“npm i”之后,这个文件被覆盖了。所以我只想把这个指定的文件添加到.npmignore。但我不知道该怎么做。有人愿意告诉我这个秘密吗?:) 提前致谢!
npm - .npmignore:忽略整个文件夹,除了给定的文件类型
背景
我有一个要发布到 npm 的打字稿项目。我所有的 TS 源都在一个名为的文件夹中src
,它们被编译到一个名为dist
. src
可能包括一些 html 模板,可能是 css 文件和其他资产。作为构建的一部分,这些资产都被复制到 dist 文件夹。
源映射文件也在 dist 文件夹中生成
发布时,我只想发布 dist 文件夹,但我希望 dist 文件夹中的源映射能够工作。
我想要达到的目标
当我发布到 npm 时,我想包含整个dist
文件夹,但忽略文件夹中的所有非 ts 文件src
。
我需要这些.ts
文件的原因是因为 dist 文件夹中的源映射指向这些源文件。调试时,我需要原始源代码才能在浏览器中看到它。
所以,我需要忽略src
中的.ts
文件除外src
我试过的
我已经尝试了以下方法,根据我的研究,据我所知应该可以。
当我使用这个文件打包时,我得到了包中的整个 src 文件夹,包括 html、css 和图像文件。
我不确定上述是否适用于文件src
夹下的 ts 文件,所以我也尝试了
但结果是一样的。
npm - 从本地目录加载 npm 包,而不复制不必要的文件/文件夹,例如 node_modules
假设我必须开发一个 npm 包my-package,它需要由my-project导入和使用。
在开发my-package时,我需要安装和使用来自 npm 的其他包。在my-package开发结束时,我将所有相关文件捆绑在dist目录中。由于我不想将node_modules文件夹中的所有文件作为包的一部分发布,因此我在.gitignore(或.npmignore)中指定排除node_modules文件夹。所以my-package文件夹的最终结构看起来像
现在我在 npm 存储库上发布my-package,然后使用命令将其导入my-projectnpm i my-package
。
由于这种导入,托管my-project的目录结构类似于
正如预期的那样,在my-package文件夹下没有导入任何node_modules文件夹。
由于我是my-package和my-project的开发人员,因此在开发过程中,我想使用如下命令从本地路径导入my-package
npm -i ../my-package
如果我这样做,我看到的结果是存储在my-package目录下的所有文件和文件夹都复制到my-project的node_modules文件夹下,即不考虑.gitignore(或.npmignore )排除项。最终结果是一个结构,例如
如果软件包是从npm 存储库安装的,有没有办法从本地路径安装my-package的相关文件?
npm - 将 .gitignore / .npmignore 映射到 tar 排除项
假设我有一个包含以下内容的 .gitignore 或 .npmignore 文件:
并不是说 .npmignore 文件被设计为像 .gitignore 文件一样被解释。
我的问题是- 如何使用标准 .npmignore / .gitignore 文件的内容并将它们映射到--exclude
tar 命令的选项?
基本上我需要做这样的事情:
或者只是这个:
后者看起来不错,但是如何将 .gitignore / .npmignore 中的内容映射到命令行?有没有可以做到这一点的包?
npm - 使 npm 忽略以特定前缀开头的文件夹
现在我的.gitignore
文件有以下规则:
这似乎适用于 Git(和 github)并忽略以下文件夹:
但是当发布到 npm 时,这些文件夹不会被忽略并且正在发布。
有什么方法可以将它们从 npm 中排除?
javascript - 纱线发布.gitignore 覆盖 .npmignore
我正在尝试发布我创建的模块。该模块中有多个条目,我想从我的构建文件夹中发布。
每次我尝试用纱线发布。我得到:
输出:您的 .gitignore 文件之一会忽略以下路径: build/package.json 如果您真的想添加它们,请使用 -f。
我试过yarn publish build
而且cd build && yarn publish
我复制 package.json 和 npmignore 以及所有相关文件的地方。
结果总是一样的。
我的根目录中有一个 .gitignore,根目录中有一个 .npmignore。
如果我从根目录发布 build 文件夹,它可以工作,但我不希望路径包含 build/lib 文件夹。
如果我这样做yarn build && cd build && npm publish && cd ../
也将起作用。但我宁愿使用yarn
.
有没有人有解决方案?
我想要的只是发布我已经创建的构建文件夹内容。我那里有所有需要的文件。
编辑
经过大量研究并研究其他软件包,
我最终只是创建了一个小的复制脚本,它将我的基本文件复制到一个构建文件夹中,并从所有不需要的项目中清除了我的 package.json。
然后我的 ci 从 build 文件夹中发布。这是我们实施的解决方案
github - 我应该 npmignore ".github" 文件夹吗?
我应该在 npmignore.github
文件夹中包含 Github Actions 所需的东西吗?
还有边问。我需要推.npmignore
送到github吗?
npm - 我需要将“.gitignore”中的内容复制粘贴到“.npmignore”吗
所以我在读这个。
据我了解,我有点困惑它是如何工作的:
如果我只有.gitignore
在我的 repo 中,npm 将使用.gitignore
,但如果我同时拥有,.gitignore
并且.npmignore
npm 只会读取.npmignore
,对吗?还是两者都读?
需要知道,如果只是阅读,.npmignore
我也必须从中复制粘贴内容.gitignore
。
npm - `npm publish` 忽略 .npmignore 的新增内容
在构建create-near-app
时,会在项目树中创建工件。其中一些已添加到.npmignore
文件中,但其他一些在我尝试发布新版本并注意到由于 Rust 构建工件而导致 npm 包将有数百兆字节大(!!)之前被遗漏了。我将这些添加到.npmignore
,但npm publish
没有注意到。
我可以通过删除文件来解决这个问题,但是对于一个开源库来说,这样的解决方法很容易出错,该库可能由一个不断成长和变化的贡献者团队维护和发布。
npm 是否将.npmignore
文件缓存在某处?如何让 npm 使用新设置?
详细信息和快速参考:
os:macOS 10.15.6
节点版本管理器:asdf v0.7.6
节点:v12.14.1
npm:v6.13.7
包.json:
.npmignore:
输出npm pack --dryrun
:
如果你想自己尝试:
- 克隆存储库
cd common/contracts/rust
cargo build
(你需要安装 Rust)cd ../../..
npm pack --dryrun
对你起作用吗?这是“仅在我的机器上损坏”的事情吗?