以正确的顺序合并javascript文件

时间:2015-09-14 13:20:18

标签: javascript build minify

我有一个javascript应用程序,我将代码拆分为不同命名空间中的文件,如下所示:

// file 1: src/Main.js
var Main = function () { .... 

// file 2: src/Main/SomethinElse.js
Main.SomethingElse = function () { ....

etc....

缩小时的问题是当这些文件合并时,第一个文件必须始终是第一个,然后是第二个文件。

现在我有一个bash脚本来编译,在那里我有正确顺序的所有文件的列表,但我必须在创建它之后将每个新文件添加到列表中,这似乎不是很好。

是否有任何构建工具可以处理此问题或者某些方法来重构我的代码以避免此问题?

2 个答案:

答案 0 :(得分:1)

我会选择Gulp来建立你的项目。它易于理解,并为您的构建提供了大量插件。 Link

如果你想使用Gulp,可以像这样创建一个任务:

gulp.task('scripts', function() {
    gulp.src([
        'src/Main.js', // take main js file first
        'src/*.js', // take all js files in src
        'src/Main/SomethinElse.js'])
        .pipe(sourcemaps.init()) // create sourcemaps for your code
        .pipe(concat('index.js')) // create one js file for example index.js
        .pipe(stripDebug()) // you can debug here
        .pipe(uglify()) // minify your js file
        .pipe(sourcemaps.write('maps/')) // sourcemap destination
        .pipe(gulp.dest('scripts/')); // destination of your js file
});

希望我能帮到你。

答案 1 :(得分:0)

简单(但不优雅)的方法是在源文件前加上数字

这样,您可以确保在main

之前定义了main.example
00_header.js
10_main.js
20_main/00_header.js
20_main/10_example.js
99_on_ready.js

此外,在linux上,sort依赖于LC_ALL - 请参阅man sort