Оптимизатор requirejs - как изменить оптимизированное имя модуля

Я хочу оптимизировать некоторые модули с помощью оптимизатора requirejs, но столкнулся с проблемой, касающейся путей. main.js точка входа требует компонента на /build/modules/, но имя оптимизированного модуля не соответствует этому пути. Файл компонента загружен, но определяемая им функция не вызывается.main_component.js требует компонентов moduleA а также moduleBи build"s main.js требует встроенного main_component.js,

Кодекс ./build/main.js:

require(['./modules/main_component'], function () {
  console.log('main')
})

Кодекс ./build/modules/main_component:

/* component definitions ... */
define('main_component',
    ['require','components/moduleA','components/moduleB'],
    function (require) { /* ... */}
)

Структура проекта:

/
|-- build
|   |-- modules
|   |   +-- main_component.js # optimized file
|   +-- main.js
|-- js
|   +-- modules
|       |-- components
|       |   |-- moduleA.js
|       |   +-- moduleB.js
|       +-- main_component.js
+-- index.html

Кроме того, я использую упаковщик глотка gulp-requirejs-optimize, Это мой gulpfile:

var gulp = require('gulp')
var requirejsOptimize = require('gulp-requirejs-optimize')

gulp.task('default', function () {
  return gulp.src('js/modules/*.js')
    .pipe(requirejsOptimize({
      optimize: 'none'
    }))
    .pipe(gulp.dest('build/modules'))
})

1 ответ

Решение

Добавление skipDirOptimize: true к requirejsOptimize варианты сделали свое дело. Согласно документам:

Если вы выполняете оптимизацию всего проекта, но хотите минимизировать только слои сборки, указанные в параметрах модулей, а не остальные файлы JS в выходном каталоге сборки, вы можете установить для skipDirOptimize значение true.

Другие вопросы по тегам