chenmnkken / gulp-seajs-combo

seajs(CMD) Module combo pulgin for gulp
MIT License
53 stars 20 forks source link

一个文件夹下,两个module并没有依赖关系,但执行combo后却合并到了一起 #5

Closed caidewu closed 8 years ago

caidewu commented 9 years ago

比如文件目录如下

src/               
  |-- a           
  |   |-- a.js
  |   `-- b.js
  `-- b 
      `-- bb.js

b.js 依赖 bb.js

gulp代码如下

var gulp = require( 'gulp' ),
    seajsCombo = require( 'gulp-seajs-combo' );

gulp.task( 'seajscombo', function(){
    return gulp.src( 'src/js/a/*.js' )
        .pipe( seajsCombo() )
        .pipe( gulp.task('build/js') );
}); 

结果是 合并后, a.js 中只有自己的一个module,这个是正常的 但是b.js中不仅有依赖的bb.js的module,a.js的module也被合并进来了 a.js 和 b.js 没有任何依赖关系啊,为什么会这样

chenmnkken commented 9 years ago

如果你不指定具体的路径,就会合并所有的。按照你的需求,你应该指定具体的路径。

发自我的 iPhone

在 2015年7月24日,15:55,caicai notifications@github.com 写道:

比如文件目录如下

src/
|-- a
| |-- a.js | -- b.js -- b `-- bb.js b.js 依赖 bb.js

gulp代码如下

var gulp = require( 'gulp' ), seajsCombo = require( 'gulp-seajs-combo' );

gulp.task( 'seajscombo', function(){ return gulp.src( 'src/js/a/*.js' ) .pipe( seajsCombo() ) .pipe( gulp.task('build/js') ); }); 结果是 合并后, a.js 中只有自己的一个module,这个是正常的 但是b.js中不仅有依赖的bb.js的module,a.js的module也被合并进来了 a.js 和 b.js 没有任何依赖关系啊,为什么会这样

— Reply to this email directly or view it on GitHub.

caidewu commented 9 years ago

指定具体的路径是指什么?除了gulp.src 我并没有看到插件有指定路径的参数

如果src指定一个文件,gulp.src( 'src/js/a/a1.js' ),那么的合并出的结果是我想要的,生成的文件会被transport,而且把require的module引进来

但是如果这样,gulp.src( ['src/js/a/a1.js','src/js/a/a2.js'] ),那么排在前面的a1是正常的,但是a2会把a1的内容合并过来,即使a1和a2没有依赖关系

请明示,谢谢!

chenmnkken commented 9 years ago

gulp.src( 'src/js/a/a1.js' ) 每个合并任务最好只有1个具体的入口文件,这个是正常的使用方法。 gulp.src( ['src/js/a/a1.js','src/js/a/a2.js'] )这个合并任务有2个入口文件,会对2个文件都进行合并,通常这不是用户想要的。如果想指定多个合并文件的任务,请建立多个任务,这样合并逻辑才清晰。

caidewu commented 9 years ago

你说的我大概明白了,因为我的项目并不是SAP,每个页面都引用了js,如果按照你说的使用多个任务那得写上百个任务,也是不现实

chenmnkken commented 9 years ago

如果你一个站点有上百个 js 外链,那么本身就规划不合理了。

YinshawnRao commented 9 years ago

也就是说不能使用*.js来一次性combo,必须一个个来?

chenmnkken commented 9 years ago

看你想要打多少个包了

YinshawnRao commented 9 years ago

有36个js需要合并,现在是一个个的合并的,如果写*.js就会出现和上诉一样的重复的问题

chenmnkken commented 9 years ago

自己按需合并吧,不能一股脑儿就合并成一个文件