Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
1

Сжатие javascript/css через bat

19.02.2014, 14:59. Просмотров 1453. Ответов 26
Метки нет (Все метки)

Здравствуйте.
Есть библиотека YUI Compressor
Как через бат заставить сжать все файлы js/css в папке/подпапках через данную библиотеку?
Или возможно есть какой-то другой способ быстро их сжать, посоветуйте пожалуйста.

А то по одному надоело сжимать через онлайн сервис.

Спасибо большое!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 14:59
Ответы с готовыми решениями:

Помогите с запуском bat-файла через bat-файл
Расклад таков: 1. У меня есть bat файл(help.bat). 2. Нужно написать ещё один чтобы он запускал...

Максимальное сжатие каталога через консольный архиватор 7z
Необходимо максимально сжать каталог через консольный архиватор 7z. Через GUI настройки см. в...

Запуск cpp через bat
Меня озадачили следующим: запустить программу, написанную на С++ через bat файл. При чём не просто...

Настройка Windows XP через *.bat
Доброе Время Суток ! Помогите решить такой вопрос: Мне нужно написать бат файл через который...

Запуск 2 приложений через bat
Парни, помогите пожалуйста написать батник. Задача такая, на раб. столе находятся два ярлыка. Нужно...

26
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
19.02.2014, 17:59 2
chechk, так не пойму в чем проблема?
По приведенной вами же ссылке написано:
Usage: java -jar yuicompressor-x.y.z.jar [options] [input file]
Т.е. получается, что вот так:
Bash
1
2
@echo off
for /f %%i in ('dir /a-D /S /b %~1\*.css %~1\*.js 2^>nul') do java -jar yuicompressor-2.4.8.jar %%i
Параметром передаете путь в котором нужно упаковать файлы.

Добавлено через 39 секунд
Соответственно должна быть установлена java и в папке со скриптом лежать yuicompressor-2.4.8.jar
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 18:48  [ТС] 3
Цитата Сообщение от Borodа Посмотреть сообщение
chechk, так не пойму в чем проблема?
По приведенной вами же ссылке написано:


Т.е. получается, что вот так:
Bash
1
2
@echo off
for /f %%i in ('dir /a-D /S /b %~1\*.css %~1\*.js 2^>nul') do java -jar yuicompressor-2.4.8.jar %%i
Параметром передаете путь в котором нужно упаковать файлы.

Добавлено через 39 секунд
Соответственно должна быть установлена java и в папке со скриптом лежать yuicompressor-2.4.8.jar
Не работает=(
Всё сделала как написано выше.
Запускаю батник, а он никаких действий..

Добавлено через 18 минут
Цитата Сообщение от chechk Посмотреть сообщение
Не работает=(
Всё сделала как написано выше.
Запускаю батник, а он никаких действий..
PS / Пишит следующее
"java" не являеться внутрней или внешней командой, исполняемой программой или пакетным файлом

PS1 / Java установлен, всё помещенно как написано выше

PS2 / И почему-то находит файлы css/js, не только в той папке/подпапках где лежит батник, а и в папке windows и т.д
0
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
19.02.2014, 19:28 4
Сорри.
Вот так нужно:
Bash
1
for /f %%i in ('dir /a-D /S /b %~1\*.css %~1\*.js 2^>nul') do start /b "" cmd /c "java -jar yuicompressor-2.4.8.jar %%i"
1
19.02.2014, 19:28
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 20:51  [ТС] 5
Цитата Сообщение от Borodа Посмотреть сообщение
Сорри.
Вот так нужно:
Bash
1
for /f %%i in ('dir /a-D /S /b %~1\*.css %~1\*.js 2^>nul') do start /b "" cmd /c "java -jar yuicompressor-2.4.8.jar %%i"
Всё равно пишит, что java не являеться внутренней или внешней командой, исполняемой программой или пакетным файлом. =(
0
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
19.02.2014, 20:52 6
Значит java не установлена.
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 20:59  [ТС] 7
Цитата Сообщение от Borodа Посмотреть сообщение
Значит java не установлена.
Установлена.
Сжатие javascript/css через bat
0
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 21:15  [ТС] 8
Цитата Сообщение от chechk Посмотреть сообщение
Установлена.
Вложение 367758
PS !
Проблему с джава я решила таким <ссылка удалена>

Но осталось проблема другая, не пойму, почему скрипт начинает искать файлы .js .css по всей системе, а не там, где лежит бат файл (в папках/подпапках)
0
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
19.02.2014, 21:40 9
Лучший ответ Сообщение было отмечено chechk как решение

Решение

Цитата Сообщение от chechk Посмотреть сообщение
а не там, где лежит бат файл
Сейчас гляну.

Добавлено через 1 минуту
Вот так попробуйте.
Bash
1
for /f %%i in ('dir /a-D /S /b %~dp0*.css %~dp0*.js 2^>nul') do start /b "" cmd /c "java -jar yuicompressor-2.4.8.jar %%i"
1
Dragokas
Эксперт WindowsАвтор FAQ
17073 / 7128 / 861
Регистрация: 25.12.2011
Сообщений: 10,933
Записей в блоге: 16
19.02.2014, 22:12 10
Bash
1
@For /R "%~dp0" %%a in (*.css *.js) do @java -jar yuicompressor-2.4.8.jar "%%a" -o "%%~dpna_fix%%~xa"
Если писать прямо в консоле cMD - двойные %% заменить на одиночные %.
Результат будет сохранен в файлы с постфиксом fix.
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 22:17  [ТС] 11
Цитата Сообщение от Dragokas Посмотреть сообщение
Bash
1
@For /R "%~dp0" %%a in (*.css *.js) do @java -jar yuicompressor-2.4.8.jar "%%a" -o "%%~dpna_fix%%~xa"
Если писать прямо в консоле cMD - двойные %% заменить на одиночные %.
Результат будет сохранен в файлы с постфиксом fix.
Код
ce = EXPRESSION;
[ERROR] in C:\marionette\content
\SpecialPowersObserverAPI.js
  232:9:syntax error
        at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScri
ptCompressor.java:315)
        at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScr
iptCompressor.java:536)
        at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.ja
va:147)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21)
Ошибки.

Подскажите пожалуйста, какой-нибудь рабочий метод сжатия javascript/css.
Этот что-то не работает.
0
Dragokas
Эксперт WindowsАвтор FAQ
17073 / 7128 / 861
Регистрация: 25.12.2011
Сообщений: 10,933
Записей в блоге: 16
19.02.2014, 22:20 12
Значит так и есть. В скрипте ошибки.
Присылайте один такой - может и посмотрю.
Вероятно где какие настройки конвертера покрутить нужно. Но там не особо их много.
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 22:23  [ТС] 13
Цитата Сообщение от Dragokas Посмотреть сообщение
Значит так и есть. В скрипте ошибки.
Присылайте один такой - может и посмотрю.
Вероятно где какие настройки конвертера покрутить нужно. Но там не особо их много.
Я в онлайне сжимаю, всё нормально.
А через данный jar не сжимает почему-то..

Код
/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

/**
 * The ElementManager manages DOM references and interactions with elements.
 * According to the WebDriver spec (http://code.google.com/p/selenium/wiki/JsonWireProtocol), the
 * server sends the client an element reference, and maintains the map of reference to element.
 * The client uses this reference when querying/interacting with the element, and the 
 * server uses maps this reference to the actual element when it executes the command.
 */

this.EXPORTED_SYMBOLS = [
  "ElementManager",
  "CLASS_NAME",
  "SELECTOR",
  "ID",
  "NAME",
  "LINK_TEXT",
  "PARTIAL_LINK_TEXT",
  "TAG",
  "XPATH"
];

const DOCUMENT_POSITION_DISCONNECTED = 1;

let uuidGen = Components.classes["@mozilla.org/uuid-generator;1"]
             .getService(Components.interfaces.nsIUUIDGenerator);

this.CLASS_NAME = "class name";
this.SELECTOR = "css selector";
this.ID = "id";
this.NAME = "name";
this.LINK_TEXT = "link text";
this.PARTIAL_LINK_TEXT = "partial link text";
this.TAG = "tag name";
this.XPATH = "xpath";

function ElementException(msg, num, stack) {
  this.message = msg;
  this.code = num;
  this.stack = stack;
}

this.ElementManager = function ElementManager(notSupported) {
  this.seenItems = {};
  this.timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);
  this.elementStrategies = [CLASS_NAME, SELECTOR, ID, NAME, LINK_TEXT, PARTIAL_LINK_TEXT, TAG, XPATH];
  for (let i = 0; i < notSupported.length; i++) {
    this.elementStrategies.splice(this.elementStrategies.indexOf(notSupported[i]), 1);
  }
}

ElementManager.prototype = {
  /**
   * Reset values
   */
  reset: function EM_clear() {
    this.seenItems = {};
  },

  /**
  * Add element to list of seen elements
  *
  * @param nsIDOMElement element
  *        The element to add
  *
  * @return string
  *        Returns the server-assigned reference ID
  */
  addToKnownElements: function EM_addToKnownElements(element) {
    for (let i in this.seenItems) {
      let foundEl = null;
      try {
        foundEl = this.seenItems[i].get();
      }
      catch(e) {}
      if (foundEl) {
        if (XPCNativeWrapper(foundEl) == XPCNativeWrapper(element)) {
          return i;
        }
      }
      else {
        //cleanup reference to GC'd element
        delete this.seenItems[i];
      }
    }
    var id = uuidGen.generateUUID().toString();
    this.seenItems[id] = Components.utils.getWeakReference(element);
    return id;
  },
  
  /**
   * Retrieve element from its unique ID
   *
   * @param String id
   *        The DOM reference ID
   * @param nsIDOMWindow win
   *        The window that contains the element
   *
   * @returns nsIDOMElement
   *        Returns the element or throws Exception if not found
   */
  getKnownElement: function EM_getKnownElement(id, win) {
    let el = this.seenItems[id];
    if (!el) {
      throw new ElementException("Element has not been seen before. Id given was " + id, 17, null);
    }
    try {
      el = el.get();
    }
    catch(e) {
      el = null;
      delete this.seenItems[id];
    }
    // use XPCNativeWrapper to compare elements; see bug 834266
    let wrappedWin = XPCNativeWrapper(win);
    if (!el ||
        !(XPCNativeWrapper(el).ownerDocument == wrappedWin.document) ||
        (XPCNativeWrapper(el).compareDocumentPosition(wrappedWin.document.documentElement) &
         DOCUMENT_POSITION_DISCONNECTED)) {
      throw new ElementException("Stale element reference", 10, null);
    }
    return el;
  },
  
  /**
   * Convert values to primitives that can be transported over the Marionette
   * JSON protocol.
   * 
   * @param object val
   *        object to be wrapped
   *
   * @return object
   *        Returns a JSON primitive or Object
   */
  wrapValue: function EM_wrapValue(val) {
    let result;
    switch(typeof(val)) {
      case "undefined":
        result = null;
        break;
      case "string":
      case "number":
      case "boolean":
        result = val;
        break;
      case "object":
        if (Object.prototype.toString.call(val) == '[object Array]') {
          result = [];
          for (let i in val) {
            result.push(this.wrapValue(val[i]));
          }
        }
        else if (val == null) {
          result = null;
        }
        else if (val.nodeType == 1) {
          result = {'ELEMENT': this.addToKnownElements(val)};
        }
        else {
          result = {};
          for (let prop in val) {
            result[prop] = this.wrapValue(val[prop]);
          }
        }
        break;
    }
    return result;
  },
  
  /**
   * Convert any ELEMENT references in 'args' to the actual elements
   *
   * @param object args
   *        Arguments passed in by client
   * @param nsIDOMWindow win
   *        The window that contains the elements
   *
   * @returns object
   *        Returns the objects passed in by the client, with the
   *        reference IDs replaced by the actual elements.
   */
  convertWrappedArguments: function EM_convertWrappedArguments(args, win) {
    let converted;
    switch (typeof(args)) {
      case 'number':
      case 'string':
      case 'boolean':
        converted = args;
        break;
      case 'object':
        if (args == null) {
          converted = null;
        }
        else if (Object.prototype.toString.call(args) == '[object Array]') {
          converted = [];
          for (let i in args) {
            converted.push(this.convertWrappedArguments(args[i], win));
          }
        }
        else if (typeof(args['ELEMENT'] === 'string') &&
                 args.hasOwnProperty('ELEMENT')) {
          converted = this.getKnownElement(args['ELEMENT'],  win);
          if (converted == null)
            throw new ElementException("Unknown element: " + args['ELEMENT'], 500, null);
        }
        else {
          converted = {};
          for (let prop in args) {
            converted[prop] = this.convertWrappedArguments(args[prop], win);
          }
        }
        break;
    }
    return converted;
  },
  
  /*
   * Execute* helpers
   */
  
  /**
   * Return an object with any namedArgs applied to it. Used
   * to let clients use given names when refering to arguments
   * in execute calls, instead of using the arguments list.
   *
   * @param object args
   *        list of arguments being passed in
   *
   * @return object
   *        If '__marionetteArgs' is in args, then
   *        it will return an object with these arguments
   *        as its members.
   */
  applyNamedArgs: function EM_applyNamedArgs(args) {
    namedArgs = {};
    args.forEach(function(arg) {
      if (typeof(arg['__marionetteArgs']) === 'object') {
        for (let prop in arg['__marionetteArgs']) {
          namedArgs[prop] = arg['__marionetteArgs'][prop];
        }
      }
    });
    return namedArgs;
  },
  
  /**
   * Find an element or elements starting at the document root or
   * given node, using the given search strategy. Search
   * will continue until the search timelimit has been reached.
   *
   * @param nsIDOMWindow win
   *        The window to search in
   * @param object values
   *        The 'using' member of values will tell us which search
   *        method to use. The 'value' member tells us the value we
   *        are looking for.
   *        If this object has an 'element' member, this will be used
   *        as the start node instead of the document root
   *        If this object has a 'time' member, this number will be
   *        used to see if we have hit the search timelimit.
   * @param function on_success
   *        The notification callback used when we are returning successfully.
   * @param function on_error
            The callback to invoke when an error occurs.
   * @param boolean all
   *        If true, all found elements will be returned.
   *        If false, only the first element will be returned.
   *
   * @return nsIDOMElement or list of nsIDOMElements
   *        Returns the element(s) by calling the on_success function.
   */
  find: function EM_find(win, values, searchTimeout, on_success, on_error, all, command_id) {
    let startTime = values.time ? values.time : new Date().getTime();
    let startNode = (values.element != undefined) ?
                    this.getKnownElement(values.element, win) : win.document;
    if (this.elementStrategies.indexOf(values.using) < 0) {
      throw new ElementException("No such strategy.", 17, null);
    }
    let found = all ? this.findElements(values.using, values.value, win.document, startNode) :
                      this.findElement(values.using, values.value, win.document, startNode);
    if (found) {
      let type = Object.prototype.toString.call(found);
      if ((type == '[object Array]') || (type == '[object HTMLCollection]') || (type == '[object NodeList]')) {
        let ids = []
        for (let i = 0 ; i < found.length ; i++) {
          ids.push(this.addToKnownElements(found[i]));
        }
        on_success(ids, command_id);
      }
      else {
        let id = this.addToKnownElements(found);
        on_success({'ELEMENT':id}, command_id);
      }
      return;
    } else {
      if (!searchTimeout || new Date().getTime() - startTime > searchTimeout) {
        on_error("Unable to locate element: " + values.value, 7, null, command_id);
      } else {
        values.time = startTime;
        this.timer.initWithCallback(this.find.bind(this, win, values,
                                                   searchTimeout,
                                                   on_success, on_error, all,
                                                   command_id),
                                    100,
                                    Components.interfaces.nsITimer.TYPE_ONE_SHOT);
      }
    }
  },

  /**
   * Find a value by XPATH
   * 
   * @param nsIDOMElement root
   *        Document root
   * @param string value
   *        XPATH search string
   * @param nsIDOMElement node
   *        start node
   *
   * @return nsIDOMElement
   *        returns the found element
   */
  findByXPath: function EM_findByXPath(root, value, node) {
    return root.evaluate(value, node, null,
            Components.interfaces.nsIDOMXPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
  },

  /**
   * Find values by XPATH
   * 
   * @param nsIDOMElement root
   *        Document root
   * @param string value
   *        XPATH search string
   * @param nsIDOMElement node
   *        start node
   *
   * @return object
   *        returns a list of found nsIDOMElements
   */
  findByXPathAll: function EM_findByXPathAll(root, value, node) {
    let values = root.evaluate(value, node, null,
                      Components.interfaces.nsIDOMXPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
    let elements = [];
    let element = values.iterateNext();
    while (element) {
      elements.push(element);
      element = values.iterateNext();
    }
    return elements;
  },
  
  /**
   * Helper method to find. Finds one element using find's criteria
   * 
   * @param string using
   *        String identifying which search method to use
   * @param string value
   *        Value to look for
   * @param nsIDOMElement rootNode
   *        Document root
   * @param nsIDOMElement startNode
   *        Node from which we start searching
   *
   * @return nsIDOMElement
   *        Returns found element or throws Exception if not found
   */
  findElement: function EM_findElement(using, value, rootNode, startNode) {
    let element;
    switch (using) {
      case ID:
        element = startNode.getElementById ?
                  startNode.getElementById(value) : 
                  this.findByXPath(rootNode, './/*[@id="' + value + '"]', startNode);
        break;
      case NAME:
        element = startNode.getElementsByName ?
                  startNode.getElementsByName(value)[0] : 
                  this.findByXPath(rootNode, './/*[@name="' + value + '"]', startNode);
        break;
      case CLASS_NAME:
        element = startNode.getElementsByClassName(value)[0]; //works for >=FF3
        break;
      case TAG:
        element = startNode.getElementsByTagName(value)[0]; //works for all elements
        break;
      case XPATH:
        element = this.findByXPath(rootNode, value, startNode);
        break;
      case LINK_TEXT:
      case PARTIAL_LINK_TEXT:
        let allLinks = startNode.getElementsByTagName('A');
        for (let i = 0; i < allLinks.length && !element; i++) {
          let text = allLinks[i].text;
          if (PARTIAL_LINK_TEXT == using) {
            if (text.indexOf(value) != -1) {
              element = allLinks[i];
            }
          } else if (text == value) {
            element = allLinks[i];
          }
        }
        break;
      case SELECTOR:
        element = startNode.querySelector(value);
        break;
      default:
        throw new ElementException("No such strategy", 500, null);
    }
    return element;
  },

  /**
   * Helper method to find. Finds all element using find's criteria
   * 
   * @param string using
   *        String identifying which search method to use
   * @param string value
   *        Value to look for
   * @param nsIDOMElement rootNode
   *        Document root
   * @param nsIDOMElement startNode
   *        Node from which we start searching
   *
   * @return nsIDOMElement
   *        Returns found elements or throws Exception if not found
   */
  findElements: function EM_findElements(using, value, rootNode, startNode) {
    let elements = [];
    switch (using) {
      case ID:
        value = './/*[@id="' + value + '"]';
      case XPATH:
        elements = this.findByXPathAll(rootNode, value, startNode);
        break;
      case NAME:
        elements = startNode.getElementsByName ?
                   startNode.getElementsByName(value) : 
                   this.findByXPathAll(rootNode, './/*[@name="' + value + '"]', startNode);
        break;
      case CLASS_NAME:
        elements = startNode.getElementsByClassName(value);
        break;
      case TAG:
        elements = startNode.getElementsByTagName(value);
        break;
      case LINK_TEXT:
      case PARTIAL_LINK_TEXT:
        let allLinks = rootNode.getElementsByTagName('A');
        for (let i = 0; i < allLinks.length; i++) {
          let text = allLinks[i].text;
          if (PARTIAL_LINK_TEXT == using) {
            if (text.indexOf(value) != -1) {
              elements.push(allLinks[i]);
            }
          } else if (text == value) {
            elements.push(allLinks[i]);
          }
        }
        break;
      case SELECTOR:
        elements = Array.slice(startNode.querySelectorAll(value));
        break;
      default:
        throw new ElementException("No such strategy", 500, null);
    }
    return elements;
  },
}
0
Dragokas
Эксперт WindowsАвтор FAQ
17073 / 7128 / 861
Регистрация: 25.12.2011
Сообщений: 10,933
Записей в блоге: 16
19.02.2014, 22:27 14
Я же говорю, возможно дополнительные ключи нужно задавать.
Давайте файл - попробую посмотреть.
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 22:29  [ТС] 15
Цитата Сообщение от Dragokas Посмотреть сообщение
Я же говорю, возможно дополнительные ключи нужно задавать.
Давайте файл - попробую посмотреть.
я выложила выше
0
Dragokas
Эксперт WindowsАвтор FAQ
17073 / 7128 / 861
Регистрация: 25.12.2011
Сообщений: 10,933
Записей в блоге: 16
19.02.2014, 23:01 16
Лучший ответ Сообщение было отмечено chechk как решение

Решение

Оказывается путь нужно передавать в двойных слешах ))
++ ключ -o не понимает путь (только имя файла)

Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
cd /d "%~dp0"
set path=%path%;C:\Program Files (x86)\Java\jre7\bin
For /R "%~dp0" %%a in (*.css *.js) do call :DoubleSlash "%%a"
pause
goto :eof
 
:DoubleSlash
set "src=%~1"
set "src=%src:\=\\%"
java -jar "yuicompressor-2.4.8.jar" "%src%" > "%~dpn1_fix%~x1"
goto :eof
Цитата Сообщение от chechk Посмотреть сообщение
я выложила выше
Ох, огромен... Если не секрет, что оно делает?
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 23:16  [ТС] 17
Конечно не секрет.
Убирает комментарии все, у меня скрипты, а там 60-80% комментарии.
Убирает лишние пробелы, конечные символы и т.д

Спасибо, сейчас попробую!
0
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
19.02.2014, 23:22 18
Цитата Сообщение от chechk Посмотреть сообщение
Конечно не секрет.
Имелось в виду: что делает ваш скрипт (такой длинный), а не этот явовский ужиматель.
1
chechk
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 45
19.02.2014, 23:34  [ТС] 19
Цитата Сообщение от Borodа Посмотреть сообщение
Имелось в виду: что делает ваш скрипт (такой длинный), а не этот явовский ужиматель.
А, это секрет=)
Не работает =(

Не сжимает, коментарии как были, так и остались.
Файл не изменился

Добавлено через 5 минут
Пишит, что синтаксическая ошибка.
Но через онлайн сервис её сжимает нормально..
0
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
19.02.2014, 23:46 20
Цитата Сообщение от chechk Посмотреть сообщение
А, это секрет=)
Ну тогда за вас отвечу: это кусок кода Marionette.js
Если быть совсем точным, то marionette-elements.js
1
19.02.2014, 23:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 23:46

Управление Linux через .bat
Добрый день. Такая ситуация, Поставил люнекс на удаленный сервер, без графического интерфейся для...

Отправка письма через The Bat!
Пытаюсь написать отправки письма через почтовый клиент TheBat. Такой код: &quot;C:\Program Files\The...

Установка скринсейвера через BAT файл
Есть файл &quot;заставка.screen&quot;, Нужно установить его как скринсейвер. Каким образом это сделать? И за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru