2016-01-09 3 views
1

Читаю руководство на этом сайте: http://blog.carbonfive.com/2014/05/05/roll-your-own-asset-pipeline-with-gulp/Рельсы REV активы с использованием Gulp

и я прочитал следующую часть:

Rev Это моя любимая часть использования Глоток. Rev предоставит вам дружественный файл app-ef62e7.js filename, который Asset Pipeline известен для. Причиной этого является то, что вы можете кэшировать его навсегда. Новые запросы просто указывают на новые файлы. CDN любят это. Чтобы получить файлы с хешем , довольно легко с изм.

var rev = require ('gulp-rev');

gulp.task ('оборотов', [ 'меньше', 'скрипты'], функция() {вернуть gulp.src ([ 'расстояние//.css', «DIST//. js ']) .pipe (rev()) .pipe (gulp.dest (' dist ')) .pipe (rev.manifest()) .pipe (gulp.dest (' dist '));}); view rawgulpfile.js, размещенный с помощью ❤ by GitHub Теперь имя файла добавлено в хеш! Обратите внимание на сборник I ; что выглядит следующим образом:

{ "app.css": "приложение-1c1d3237.css", "app.js": "приложение-26ad0c3f.js"} вид rawrev-manifest.json размещаемые с ❤ по GitHub Вот где бит пользовательского кода вступил в игру. Когда вы создаете свой index.html (или где бы вы ни ссылались на CSS/JS), вам придется поменять URL-адрес, указанный в файле дайджеста. Должен быть только вопрос разбора этого файла JSON в вашей выборке или с Gulp переписать ваш index.html для замены CSS/JS с правильным именем файла .

Это все хорошо, и звучит хорошо для меня, но если я что и Глоток впрыскивает новые имена файлов для моего основного CSS и JS файлов, то моя мерзавец система управления версиями собирается забрать это как изменение КАЖДОЕ ВРЕМЯ Я обновляю свои активы.

Как люди справляются с этим?

ответ

0

Я использую .gitignore и игнорировать каталог активов (/ государственные/активы)

https://git-scm.com/docs/gitignore

Обновлено:

Rails будет заботиться о именах файлов для вас. Если вы используете ниже хелперы

<% = javascript_include_tag «приложение»% > <% = stylesheet_link_tag «приложение»% >

рельсы будут читать файл манифеста и вставьте правильное имя файла, когда эти помощники выполняются ,

Rails делает это md5 вещь: http://guides.rubyonrails.org/asset_pipeline.html#in-production

файл манифеста: Read 4.1 http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives Искать: манифеста-md5hash.JSON

См Исходный код: http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-javascript_include_tag

я написал свой собственный помощник приложения актива:

def javascript_file(filename) 
    files = Dir.glob(Rails.root.join('public/assets/manifest*.json'.freeze)) 
    if files.count > 0 
     manifest = JSON.parse(File.read(files[0])) 
     manifest[filename] 
    else 
     filename 
    end 
    end 
+0

Я делаю это уже для активов, но это было не то, что мой вопрос был о. Мой вопрос касается макетов. – rctneil

+0

Я в замешательстве, ваше сообщение, похоже, подразумевает, что вы переписываете свои исходные файлы активов. Все файлы, выводимые gulp, должны быть записаны в/public/assets или некоторые из них, а исходные файлы должны быть оставлены как есть. – Daniel

+0

Эта задача, приведенная выше, позволяет обновлять сценарии и теги ссылок, связанные с app.css и app.js, в своих файлах макета представления каждый раз, когда обновляются скомпилированные активы. Тогда это повлияло бы на VCS, видя изменение при каждом обновлении какого-либо актива. – rctneil

Смежные вопросы