Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обфускация javascript кода на проекте (https://javascript.ru/forum/misc/43644-obfuskaciya-javascript-koda-na-proekte.html)

shkarbatov 15.12.2013 14:04

Обфускация javascript кода на проекте
 
Всем добрый день!

Искал информацию, как автоматизировать процесс формирования обфусцированного css и js кода, но что-то ничего не нашел.

Понятно, что есть online инструменты для формирования обфусцированного js и css кода. Но руками это делать после каждого изменения не хочется.

Сейчас есть проект написанный на php (Yii), и js (jQuery). В js файле есть комментарии, отступы, которые понятное дело, при обфускации надо удалить.

Сейчас я вижу 3 решения:
1) Каждый раз когда пользователь запрашивает страницу - дергать обфускатор (но этот вариант как-то не очень, даже с настроенным кешированием);
2) Дергать обфускатор перед каждым коммитом, тут еще один вопрос, должен ли обфусцированный код лежать под репой?;
3) Дергать обфускатор при выставлении нового билда.

Как правильно настроить (куда копать), что бы в продакшене брался обфусцированный код, а при разработке - нормальный.

Подскажите пожалуйста, какие есть готовые решения для этого, лучшие практики? Как правильней это делать?

Аналогичные вопросы и с CSS.

Спасибо!

kobezzza 15.12.2013 14:22

http://gruntjs.com/

shkarbatov 15.12.2013 14:35

Спасибо, хороший инструмент.

shkarbatov 15.12.2013 15:25

Подскажите, а с помощью grunt watch я так понял можно на продакшене и на тестовом подключать уже обфусцированные файлы, а при изменении не обфусцированного кода на проекте, в момент разработки, он автоматически обновит обфусцированный файл? Только в таком случае надо что бы grunt был и на машине разработчика и на тестовой машине?

Не будет ли проблем с тем, что бы держать постоянно запущенный процесс, отслеживания измененных файлов в продакшене, особенно если проект высоконагржунный? Или лучше не использовать его для продакшена?

kobezzza 15.12.2013 20:50

Цитата:

Сообщение от shkarbatov (Сообщение 286732)
Подскажите, а с помощью grunt watch я так понял можно на продакшене и на тестовом подключать уже обфусцированные файлы, а при изменении не обфусцированного кода на проекте, в момент разработки, он автоматически обновит обфусцированный файл? Только в таком случае надо что бы grunt был и на машине разработчика и на тестовой машине?

Не будет ли проблем с тем, что бы держать постоянно запущенный процесс, отслеживания измененных файлов в продакшене, особенно если проект высоконагржунный? Или лучше не использовать его для продакшена?

В продакшене лучше так не делать, да и зачем (ведь обычно при выкладке на продакшен проект собирается один раз и живёт так до следующего релиза) ? А вот в девелоперском режиме, то сам Бог велел:)

shkarbatov 15.12.2013 22:35

В таком случае минифицированный файл должен лежать под репой. Что бы на продакшен выложить по git pull, но тогда grunt должен быть только на машинах разработчиков, а не хочется разворачивать его на всех машинах.

Есть вариант вынести его из под репы и на предрелизном настроить автоматическую работу grunt при смене кода, но тут опять таки, по git pull, не обновишь на продакшене и надо будет руками заменять одно на другое.

А хотелось бы какой то автоматизированный вариант.
Либо просто писать bash скрипт, который бы все это делал сам.

kobezzza 16.12.2013 10:47

У меня сделано так: продакш синхронизируется с master веткой git, т.е. когда я делаю git push в master, то проект автоматом подсасывает изменения и пересобирается (т.е. grunt также стоит и на продакшене, но включается только при пересборке проекта). Правда у меня проект на node.js, т.е. запуск Grunt дело тривиальное, а тебе придётся для этого сначала установить на сервер node.js.

shkarbatov 16.12.2013 21:03

Понятно, спасибо!

Можно ли как-то настроить Grunt, что бы он отрабатывал при обновлении проекта, то есть когда мы на продакшене делаем git pull, если да, то можно какой-нить пример или ссылку на доку.

kobezzza 17.12.2013 18:49

Вот это хз, но ведь можно в самом гите повесить макрос на git pull, чтобы при вызове git pull делался git pull && grunt

skynet12345 29.11.2014 00:33

удалить информацию javascript
 
Всем Доброго Время Суток,Подскажите Пожалуйста,Как можно удалить javascript ,когда сайт уже есть:help:


Часовой пояс GMT +3, время: 05:20.