【问题标题】:npm 3.x and local paths in module's package.jsonnpm 3.x 和模块 package.json 中的本地路径
【发布时间】:2016-02-01 01:09:12
【问题描述】:

最近我用 npm 3.x 安装了一个新的 nodejs 5.x - 最显着的变化是 node_modules 中的扁平结构 - 这在 Windows 环境中是件好事。

不幸的是,我注意到新的 npm 将所有已安装模块的本地路径放在 package.json 中。我怎样才能防止这种情况(或放在那里相对路径)?我想将我的 node_modules 提交到 hg 存储库,因此开发团队中的每个人都将拥有相同的模块。这是从 abbrev 包中剥离的 package.json 示例:

{
  "_args": [
    [
      "abbrev@https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz",
      "C:\\Users\\ABC\\Documents\\ABC"
    ]
  ],
  "_where": "C:\\Users\\ABC\\Documents\\ABC"
}

“C:\Users\ABC\Documents\ABC”是本地路径

最好的问候,

【问题讨论】:

  • 听起来像是npm shrinkwrap 的用途。 docs.npmjs.com/cli/shrinkwrap
  • 不幸的是,收缩包装的包也有由 npm manager 编写的本地路径。
  • 我的意思是你可以运行npm shrinkwrap 并将生成的文件npm-shrinkwrap.json 提交到你的项目中——这个文件中没有相对路径,只有包名和版本。签出此项目的其他人只是从该文件安装并获得完全相同的版本。问题解决了。无需提交整个node_modules 并处理兆字节的差异日志。
  • 这种方法的问题是存储库不包含所有需要的模块 - 我们正在使用 Jenkis 构建工具,我们希望避免每次构建都获取所有模块(我们每时间)。
  • 你找到答案了吗?

标签: npm package.json


【解决方案1】:

这将在 npm@5 中修复,npm@5 正式发布

npm install npm@latest -g

【讨论】:

  • 这对任何人都有效吗?我仍然得到带有_wherepackage.json 文件,包括完整的绝对路径和npm --version6.14.10
  • 正如github.com/npm/npm/issues/10393 中所解释的,似乎npm 使用以下划线开头的属性(如_where)作为穷人的日志,而不是为npm install 实施适当的日志记录。似乎没有人知道他们为什么这样做。
猜你喜欢
  • 2018-06-05
  • 2018-05-16
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
相关资源
最近更新 更多