webpack-stable-module-id-and-hash icon indicating copy to clipboard operation
webpack-stable-module-id-and-hash copied to clipboard

genModuleId函数中添加了去去版本号和query逻辑

Open keven-wang opened this issue 8 years ago • 3 comments

genModuleId函数中添加了去去版本号和query逻辑

keven-wang avatar Aug 14 '17 05:08 keven-wang

感谢 PR, 我认为不应该去掉 node_module 的相关路径,假设你的源码依赖 node_module 中的某个包,这个包后续升级或者改变路径都会影响你的「源码」,这个场景下,我认为不应该去掉 node_module 的相关路径。

你觉得呢?

EN: Thx ur PR

I dont think there should remove path about 'node_module' since that, suppose your biz source codes depend on some package in /node_module, whenever this package change its path or version,I think it should aspect your source code。For this situation, I dont think so.

How about yours?

zhenyong avatar Aug 14 '17 07:08 zhenyong

说下我修改这段代码的意图:如果代码没有做改动,应该尽可能的让编译后的结果保持相同。但这个插件的moudule Id 是根据moudulePath生成的hash,因此只要路径有不同就会造成相同的代码编译出来的doule id 不一样,进而造成编译后的代码不一样。那那些因素会导致moudlePath不同呢?1. query。个别loader会允许通过指定文件的方式来对插件的功能做扩展或定制化,但如果配置不当这些扩展文件的路径可能会是绝对地址. 2. 版本号号,确实如你所说,有些情况下保留版本号是必要的,比如你确认依赖的了某个模块的文件。但还有一些情况则不一样,你依赖的只是一个loader,这些loader的不同版本编译出的结果可能是一样的,比如less。那么这种情况下保留版本号就没什么意义了。我觉得有两种可选的方案:

  1. 把两个功能作为一个可选的feature,可以通过配置来开启
  2. 始终启用这个功能,不同的版本通过锁版本之类的功能来解决

keven-wang avatar Aug 17 '17 05:08 keven-wang

在我们项目内部,这两个问题都存在,而且这两两处引起错误的概率比造成问题的概率大的多,所以我提了这个PR。从另一个角度来讲,这个插件的功能是用来对引用的文件做编号的,决定这个编号的应该只和该文件位于项目中的位置有关系,至于版本、以及项目目录之外的一些因素应该没什么关系。就好比我的小区的行政分管单位变了或者我家装修了,但我的门牌号依然是有效的,快递员依然可以通过这个地址给我送快递。

keven-wang avatar Aug 17 '17 05:08 keven-wang