有没有办法使用gulp删除require.js define([...])包装器的所有实例?

Bui*_*er1 2 javascript regex npm gulp

我想在没有require.js的情况下测试我的应用程序,看看性能和文件大小是什么样的单个连接文件.

我正在考虑使用gulp来获取所有app*.js文件,执行gulp-replace以删除define([...], function (...) { });脚本中包装器的所有实例,并将其连接到单个*.js文件中.

任何想法gulp-replace都可以处理,如果是这样,那么正则表达式会是什么样子?这是一个*.js文件的示例:

'use strict';

define(['file1', 'file2', 'file3'], function (param1, param2, param3) {
    //...
    //code that should remain after gulp-replace
    //...
});
Run Code Online (Sandbox Code Playgroud)

Bui*_*er1 5

尝试尝试相同的其他人的解决方案:

var gulp = require('gulp'),
  concat = require('gulp-concat'),
  replace = require('gulp-replace'),
  uglify = require('gulp-uglify');

gulp.src(['src/**/*.js', '!src/main.conf.js', '!src/**/*_test.js'])
  .pipe(replace(/'use strict';/g, ''))
  .pipe(replace(/define\s?\(\[.*\],\s?function\s?\(.*\)\s?\{/g, ''))
  .pipe(replace(/\}\)\;\s?$/g, ''))
  .pipe(concat('app.js'))
  .pipe(uglify())
  .pipe(gulp.dest('dist'));
Run Code Online (Sandbox Code Playgroud)

假设您只针对require.js文件.如果您有编译错误,请尝试使用gulp-debug来确定哪个文件丢失了错误.

假设这些文件加载​​的顺序无关紧要,AngularJS应用就是这种情况.但是,如果顺序很重要,您可以在传递给gulp.src的数组中设置所需的顺序.