Ajaxmin MinifyJavascript добавление {} перед объектом - PullRequest
0 голосов
/ 13 ноября 2018

У меня возникла проблема при минимизации файла javascript с использованием метода MinifyJavaScript от AjaxMin.

Унифицированный код

if (typeof define === 'function' && define.amd) {
        define(['moment'], function (moment) {
            root.moment = factory(moment)
            return root.moment
        })
    } else if (typeof exports === 'object') {
        module.exports = factory(require('moment'))
    } else {
        root.moment = factory(root.moment)
    }

Минимизированный код

if(typeof define=="function"&&define.amd)define(["moment"],function(i){return n.moment=t(i),n.moment});else if(typeof exports=="object"){module{}.exports=t(require("moment"))}else n.moment=t(n.moment)}

Здесь в минимизированном коде "{}" добавляется после объекта модуля, например: module {}. Export, но это должен быть module.exports

Перед минификацией файла есть еще несколько файлов: 1. jquery-3.3.1.min.js 2. moment.min.js

Все файлы объединены в один файл, после чего минификация завершена.

1 Ответ

0 голосов
/ 15 ноября 2018

Я думаю, что это причины проблемы

  1. ajaxmin исходный код модуль выглядит как зарезервированное слово
  2. Если области видимости / else не компилируются должным образом в вывод.

Это, кажется, вызывает проблему

var blockType = AjaxMin.BlockTypeModule.FormatInvariant
(moduleScope.ScopeName.IfNullOrWhiteSpace(AjaxMin.ModuleNameImplicit));

Обходной путь (это то, что я сделал в своем проекте):

  • Вы можете заменить эту строку module{}. на module.
  • использовать троичный оператор вместо if / else (скорее всего, это пропустит замену всего этого чанка)
  • использовать версию этого файла minify (это пропустит minify)
...