【发布时间】: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