Cli: .DS_Store 文件在 npm 发布后显示

创建于 2019-11-08  ·  4评论  ·  资料来源: npm/cli

  Original bug ticket: [https://npm.community/t/831](https://npm.community/t/831)
  Originally filed: 2018-07-23T20:19:41.160Z
Bug Community

最有用的评论

我在 npm 6.13.0 中遇到了这个问题。 pack将包含被.gitignore和/或.npmignore忽略的文件(如果在files列出)。 当这些文件位于希望包含该目录中其他文件的目录中时,这一点最为明显。

一种似乎对我有用的解决方法是将"!.DS_Store"添加files数组中的最后一个条目(顺序似乎很重要)。

所有4条评论

我在 npm 6.13.0 中遇到了这个问题。 pack将包含被.gitignore和/或.npmignore忽略的文件(如果在files列出)。 当这些文件位于希望包含该目录中其他文件的目录中时,这一点最为明显。

一种似乎对我有用的解决方法是将"!.DS_Store"添加files数组中的最后一个条目(顺序似乎很重要)。

我想我在 npm 6.12.1 之后看到了类似的东西:我的.gitignore指定排除npm-shrinkwrap.json/build/目录。 package.json确实在files部分中明确列出了build目录。 作为构建过程的一部分,我在模块根目录中生成一个npm-shrinkwrap.json ,然后将其复制到build目录中。

使用 npm 6.4.1, ~6.7, ~6.9, ~6.10, ~6.11 和 6.12.0 打包文件(来自npm pack )仅包含build/npm-shrinkwrap.json ,但使用 6.12.1 及更高版本包括build/npm-shrinkwrap.json _and_ npm-shrinkwrap.json

(社区现在关闭/只读,如果这不是同一个问题,我想道歉!)

在已发布包的任何部分中包含shrinkwrap 文件对我来说似乎很奇怪,但无论如何它只会在根中产生影响 - 为什么您的构建过程会在那里放一个副本?

这当然是个好问题。

我将它放在 build/ 目录中,作为另一个构建步骤的一部分,该步骤采用 build/ 目录并创建一个 docker 容器映像。 这个想法是在 docker 外运行一次npm test等,然后让shrinkwrap 文件加速 docker 进程(通过让 docker 内的npm install拾取完全相同的文件)。 然后,这也将作为有关用于构建的文件的文档。 该过程只是将 npm-shrinkwrap.json 复制到构建目录中。

现在对我来说修复是使用mv而不是cp将文件放入build/目录。

编辑:Fix/Work-around 对我有用,但我有点担心由于注册表上的行为包的这种变化可能会无意中包含他们不应该包含的文件——我偶然发现了这一点,因为另一部分我的系统检查npm-shrinkwrap.json文件的存在。

此页面是否有帮助?
0 / 5 - 0 等级