ecomfe / edp-build

Package for edp build.
Other
10 stars 32 forks source link

moduleCompiler的一个问题 #59

Closed leowang721 closed 9 years ago

leowang721 commented 10 years ago

@leeight @errorrik 起因是这样:我想给某个项目编译的模块结果都加上个别名:例如 init 等同于 phoenix/init So... 我在module.conf的path中增加了这么一句:"phoenix": "../src" 事实上这句的效果要比 "phoenix":"."好很多 编译的结果基本满足了需要,单个文件可以得到这样的结果:

define('phoenix/init', function (require, exports, module) {
    function init() {
    }
    return init;
});
/** d e f i n e */
define("init", function(require){ return require("phoenix/init"); });

但是,当我在配置combine的时候,编译的结果中,模块的定义变成了:

define('init', function (require, exports, module) {
    function init() {
    }
    return init;
});

/** d e f i n e */
define("phoenix/init", function(require){ return require("init"); });

事实上单个模块的编译结果是我想要的,我期望真正的模块定义被定义给phoenix/init,而不是init,这样我在另一个项目中调用,模块是不会出现定义冲突而导致无效的状况。

扫了一下edp-build的源码,我用的是edp-build (1.0.7),发现这是因为在combine和单个模块定义时对模块的moduleId获取行为的不同导致的。 出于实验,我在util/compile-module.js的combineModuleCode方法中,修改depId的获取方式,使打包的编译结果符合了这种方式。

我看到当前版本已经1.0.14了,请问这个问题是否已经修复?

leeight commented 10 years ago

发svn

leowang721 commented 10 years ago

@leeight 这个不需要svn,随便搞个临时项目就行了,100%复现的,亲

leeight commented 9 years ago

ModuleCompiler 有 bizId 参数来支持这个功能,应该可以了吧。