Magento2: pub / static klasöründe css dosyasını yeniden oluştur


51

Magento 2'yi kurdum ve geliştirici modunu ayarladım, daha sonra css ve js dosyalarını içeren bir modül kurdum. Modül iyi çalışıyor ve css ve js dosyaları pub / static klasöründen görüntüleniyor. Şimdi modül dizininde css dosyasında css değişiklikleri yaptım ve komutu çalıştırdım.

php bin/magento setup:static-content:deploy

ancak Magento pub / static css dosyalarında yeni değişiklikler yapmıyor, bu yüzden eski css dosyası içeriğini alıyorum. Css dosyasını pub / static klasöründe nasıl yeniden oluşturabileceğimi bilen var mı?


8
Bilginize: Magento 2 bir geliştirici moduna sahiptir, böylece statik içeriği her zaman dağıtmanıza gerek kalmaz. Statik içerik yeniden kullanarak geçen ay saatlerce harcadım. Bu yüzden benim gibi olmayın ve geliştirici moduna geçin (yerel makinenizde. Canlı sunucunuz üretim modunda olmalıdır)
Nathan Merrill

neden farklı sürümle yeniden oluşturun ??? Dağıtım dosyası sürümüyle eşleşmeyen bir sorunum var. magento.stackexchange.com/questions/94502/…
Magento2 Devloper

3
Eğer magento geliştirici modundaysa, statik dosyalara sembolik bağlantılar oluşturacaktır, fakat bunun gerçekleşmesi .htaccessiçin pub/staticklasörde dosyaya sahip olmanız gerekir , böylece .htaccessşu anda eksik olan pub / statik klasörü sildiyseniz, dosyaların nasıl
linkleneceğini bilir

@NathanMerrill çok haklısın ama geliştiricilerin çoğu dokümantasyonu ve tüm cevapları okumuyor ve hala statik içeriği kullanıyor: konuşlandırma komutu ve biraz üzücü olan şey Stackexchange'te hesap yapan bazı şirketlerin böyle cevaplar vermesi. , zaman kaybı
Vlad Patru

Yanıtlar:


69

Pub / static'ı silmeden önce pub / static / .htaccess dosyasının bir yedeğini alın ve tekrar yükleyin. Aksi halde tüm css ve js'niz 404 hatası gösterecektir!

  1. Kaldır pub/static[.htaccess'i yedekle ve tekrar kopyala]
    1. Kaldır var/cache
    2. Kaldır var/composer_home
    3. Kaldır var/generation
    4. Kaldır var/page_cache
    5. Kaldır var/view_preprocessed
    6. Çalıştırmak php bin/magento setup:static-content:deploy

48
M2 işleri geliştirici dostu yapmaz.
Matthew McLennan

10
@CarComp hiçbir dosya asla elle silinmiş olmamalıdır. Magento buna dikkat etmeli. çok can sıkıcı bir durum
Claudiu Creanga

10
U magento için yeni olmalı;)
CarComp

6
404 hatalarından kaçınmak için önemli olan .htaccess dosyasını da kaybettiğiniz pub /
statik'i kaldırmanın bos

3
"Magento" da yeniyim. WAT? Css güncellemenin resmi yolu mu?
puchu

20

buradaki cevaplar pub / static klasöründeki .htaccess dosyasını silmemeniz gerektiğini söylemez .

.htacces dışındaki tüm dosyaları silmek için pub / static dizinine girin ve çalıştırın

find . -depth -name .htaccess -prune -o -delete

o zaman kaçabilirsin

rm -rf var/cache/ var/generation/ var/page_cache/ var/view_preprocessed/ 

neden farklı sürümle yeniden oluşturun ??? Dağıtım dosyası sürümüyle eşleşmeyen bir sorunum var. magento.stackexchange.com/questions/94502/…
Magento2 Devloper

1
beklendiği gibi çalışmadı
Christophe Ferreboeuf


9

Sorusuna şöyle içindir js and cssde güncelleme Magento 2 yılında geliştirici modu.

  1. Saygın modülünüzde JS'yi güncellemek,pub/static/frontend/namespace/theme/ ... module/js/... sayfayı yenilemeden önce aynı dosyayı silmek, böylece sayfa yenilemesinden sonra taze JS dosyası pub klasöründe oluşturacaktır.
  2. Saygın modülünüzdeki CSS'yi güncellemek için , pt 1'i yapın.
  3. Daha az dosya güncelleniyor

Magento'da kurulum teması ...\dev\tools\grunt\configs\themes.js

Herhangi bir tema örneği luma temasını temanıza kopyalayın ve bir ad atayın xyz

xyz: {
        area: 'frontend',
        name: 'Magento/luma',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    }

Kök klasörde dosya adını değiştirin: Gruntfile.js.sample to Gruntfile.js

Kök klasörde dosya adını değiştirin: package.json.sample to package.json

Olması gerekir hırıltı başka size site klasöründe NPM yoluyla yüklemek

Yönetici izniyle komut istemini aç

CMD'de site klasörüne git grunt exec:themeve temayı dağıtdıktan sonra ilk kez vur

O zaman grunt less:theme her seferinde daha az değişiklik yaparsak

Daha az kullanımda sık değişiklikler yapıyorsanız grunt watch, otomatik olarak çarpacaktır.grunt less:theme

Not: Symlink hatasıyla karşılaşabilirsiniz, bu yüzden geliştirme işlemine .../app/etc/di.xmlkadar yerelde dosyaya gidin ve yorum yapın ya da kodu (aşağıda kodun altında) kaldırın, bu dosyanın kodlu kodunu sunucuya itmeyin, yalnızca gerekirse yerel olarak gerekir.

<item name="view_preprocessed" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>

7

Basit bir şekilde 1

Magento Yöneticisinde. Statik Dosya Önbelleğini Temizle'ye gidin System > Tools > Cache Managementve tıklayın .

Basit bir şekilde 2

Zaten var olan css dosyasını değiştirdiyseniz, yapmanız gereken sadece ilgili dosyayı silmek pub/static, ardından sayfayı yenilediğinizde, yeni sürüm css dosyasını oluşturacaktır. Geliştirici modunda çalışır .


Farkına varmak

  1. Yeni bir dosya oluşturduğunuzda, mevcut bir dosyayı değiştirmek yerine, önbelleği temizlemeniz de gerekebilir php bin/magento cache:flush.

  2. Varsayılan mod ve geliştirici modunun , materyalize etmek yerine dinamik olarak oluşturulan statik dosyalar nedeniyle statik görünüm dosyaları dağıtması gerekmez . (Referans: Magento modları hakkında )

  3. In üretim modunda , belgeyi de ihtiyaç php bin/magento setup:static-content:deployve php bin/magento cache:flushben kalkma, üretim modu henüz.


6

Tamam, diğer çeşitli yayınlarda okuduklarım ve buradaki kişisel deneyimime dayanarak, CSS'yi veya Statik İçeriği yeniden oluşturma süreci:

php bin/magento setup:upgrade

Bu, gerçekte ihtiyacınız olan hiçbir şeyi silmeden gerekli tüm önbellek / kuşak / etc dosyalarını siler.

php bin/magento setup:di:compile

Bu daha sonra dosyaları yeniden derleyecektir. Son olarak:

php bin/magento setup:static-content:deploy

Son komuttan sonra her şey yeni ve taze olmalı, sayfanızı yenileyin.

----- Notlar ------

1) Dosya izinlerinin ve sahibinin: kullanıcı grubunun bu işlemi yapmadan önce doğru şekilde ayarlandığından emin olun, bunlar hakkında sysadmin'inizle konuşmanız gerekebilir.

2) Eğer kurulum: yükseltme komutu başarısız olursa, dosyaları silebilir ve dosya izinleri nedeniyle benim durumumda olduğu gibi yenilerini yazamayabilir. Bu, sitenizi kırabilir, izinleri kolayca düzenleyebilir ve ardından komutu yeniden çalıştırabilirsiniz.

3) Tamamen özel bir senaryo yazmadan (şimdiye kadar) belirli bir temayı veya dosyayı yeniden derlemenin bir yolunu bulamadım (eğer bir yol bulursa süper yararlı olur)

Birisi daha iyi bir şey biliyorsa, bilmeme izin verin, çünkü bazı css değişiklikleri yapmak zorunda kaldığım için 12 dakikalık dosya derleme gözlerim için oldukça zayıf bir tasarım.

--- Düzenle ---

Magento 2 Grunt'a bağlı ve bunu yapılandırmak için zaman ayırırsanız CSS / LESS dosyalarının yenilenmesini çok daha kolay hale getiriyor. Dosyaların çoğu .sample dosyaları olarak sadece .sample dosya uzantısını kaldırır, / dev / tools / grunt / configs klasöründeki themes.js dosyasını yapılandırın. Daha sonra LESS dosyalarınızı yenilemeniz gerektiğinde, daha az basitçe çalıştırın: - tema-- komut satırından.

Kaynak: http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/css-topics/css_debug.html


Php bin / magento kurulumunu sağlamayı durdurun: statik içerik: dağıtma yöntemi, geliştirici modunda magento sembolik bağlantılara sahip
Vlad Patru

Oh ve el ile klasörleri silmek, .htaccess dosyalarını ve ilgisiz diğerlerini kaldırmak ve yeniden oluşturmak için zorlamak daha iyi bir yöntemdir ??? Grunt kullanımıyla ilgili bir yorum ekledim, çünkü mağazanızın geliştirici moduna getirilmesi tüm sembolik bağları başlatmaz ve sayfa yeniden yüklediğinde css'ınızı yeniler.
Vallier

6

çalıştırmayı unutmayın grunt exec:theme, grunt less:themenerede komutları themesen bildirilen teması themes.jshomurtu yapılandırma klasöründen dosya (bütün bu geliştirici kılavuzunda olduğu) ve geliştirici modunda magento varken statik dağıtma komutunu çalıştırın olmamalı, Magento2ile çalışırSymlinks


1
"Geliştirici modunda magento varsa, statik konuşlandırma komutunu çalıştırmamalısın" <- Bu bana çok yardımcı oldu. Teşekkürler! Sadece pub / statik dizininin içeriğini sildim (tabii ki .htaccess hariç), sayfayı yeniledi ve css dosyalarımdaki işaretler otomatik olarak oluşturuldu. Şimdi onları anında düzenleyebilirim. Magento 2'nin arkadaş canlısı olmadığını kim söyledi ?! Sadece nasıl kullanılacağını bilmek gerek sanırım.
Rooster242

1
Merhaba teşekkür ederim dostum, hırıltı az: varsayılan sorunu çözdü
Yusuf Ibrahim

6

Bu komutları Magento kök klasörünüzde çalıştırın:

alias mage="php -d memory_limit=-1 -f bin/magento"

chmod -R 775 pub/static/ var/ pub/media/ &&
rm -rf var/view_preprocessed/ var/cache/ var/page_cache/ var/tmp/ var/generation/ pub/static/frontend/ ;
mage cache:flush &
mage indexer:reindex &
mage setup:upgrade &&
mage setup:static-content:deploy ; 
mage setup:db-data:upgrade &&
mage dev:source-theme:deploy &&
chmod -R 775 pub/static/ pub/media/ var/

Asla arka planda bir reindex çalıştırmayı düşünmemiştim --🏻
Sergei Filippov

Bana mı öyle geliyor, yoksa bu Magento 1 komutları, Magento 2 sorusuna cevap olarak mı?
Barry

Hiç Magento 1 komutu yoktur, onlar Magento
2'dendir

6

Bu soru hakkında cevapların çoğunun özel olarak işaret etmediği önemli bir not var. Sizin durumunuzda (kullandığınız kurulumda), CSS'nizin değişmesinin nedeni, CSS'yi pub/staticklasöre dönüştürdüğünüzde alınmama nedeni, var/view_preprocessedyönetmen içeriğini kaldırmamaktır . Bu dizinde pub/static, php bin/magento setup:static-content:deploykomutu çalıştırdığınızda CSS'inizin klasöre çeken önbelleğe alınmış bir sürümü bulunmaktadır .

Böylece yeniden derlediğinizde, Magento ilk var/view_preprocessedolarak önbelleğe alınmış CSS'nin klasörünü arayacaktır . Bu klasör boşsa, tema dosyalarına bakacak ve derleme için bu CSS'yi çekecektir.

Bu ayar yapılandırılabilir, bu nedenle, gitmeniz gereken yolu değiştirecek olan hedefinize ulaşmak için birçok yol var. Ancak özel kurulumunuzun çözümü için:

  1. Dosyaları pub/staticklasörden kaldırın :rm -rf pub/static/*

  2. Dosyaları var/view_preprocessedklasörden kaldırın :rm -rf var/view_preprocessed/*

  3. Pub statik klasörünü yeniden derleyin: php bin/magento setup:static-content:deploy

  4. Önbelleği temizle açık: php bin/magento cache:clean

  5. Tarayıcıyı yenileyin.


1
magento2, geliştirici modunda etkilenen dosyalara sembolik bağlantılar eklerse, daha sonra anında görünen bu modül dosyalarında değişiklikler
yaparsa iyi olur

Olur, ama ne zaman ve nasıl başıma kafamı sokmadım, ama cevabı bulamadım. Bunu di.xml ( app/etc/di.xml) dosyanızda ayarlayabilecek global config dosyaları var . Ancak test ederken karışık sonuçlar elde ettim. İkinci cevapta biraz daha var: magento.stackexchange.com/questions/116605/…
circlesix


5
  1. Pub statik kaldırın.
  2. pub/static777 izin ver
  3. Önbelleği temizle.
  4. Çalıştırmak: php bin/magento setup:static-content:deploy

Yeni css göreceksiniz.

NOT:

Uygun klasör ve dosya iznini verin.

Umarım bu sana yardımcı olmuştur.


"Yeni css göreceksiniz." -
Barry

4

Yönetici panelinde statik önbelleği temizleyemez miydiniz?

run php bin/magento setup:static-content:deploy

1

Geliştirici modunu kullandığınızdan emin olun.

Ardından aşağıdaki kodu yürütün:

chmod -R 777 var generated pub/static
grunt exec:default
grunt less:your_theme_name

Ön sayfayı yenile, Bu adımlar sorunumu çözdü.


güzel, gerçekten bana yardım etsin
Yoesoff

0

Ancak, setup komutuna -fveya --forceişaretini ekleyebilirsiniz .

Örnek:

php bin/magento setup:static-content:deploy -f

0

Bilgelik damlacıklarımı buraya düşüreceğim.

cache_fly.shTemelde yapan bir bash betiği kullanıyorum :

#!/bin/bash
start=`date +%s%N`
./magento setup:upgrade && \ 
./magento cache:flush && \ 
./magento setup:static-content:deploy -f
end=`date +%s%N`
runtime=$(bc <<< "scale=9;($end-$start)/1000000000")
echo "" && echo "" && echo -e "\e[34mTOTAL EXECUTION TIME: \e[1m\e[93m$runtime\e[0m"

NOT: Hayatımın kaç saatini çalıştırmak için boşa harcadığımı göstermek için bir yankı ekledim. Ayrıca ./magentoyapmak için bir script php bin/magentoveya liman işçisi kap içine aynı şeyi diyoruz liman işçisi kullanılırsa sana ait veya nokta için yapabiliriz, php bin/magento, bunu okuyorsanız ama ben neden bahsettiğimi bilmeli değilse, soran çalıştırın yardım için.


0

Davam için küçük bir adaptasyon

#!/bin/bash
start=`date +%s%N`
chmod -R 775 pub/static/ var/ pub/media/ && \
rm -rf var/view_preprocessed/* var/cache/* var/page_cache/* var/tmp/* var/generation/* pub/static/frontend/* && \
./magento cache:flush && \
./magento setup:upgrade && \
./magento cache:clean && \
./magento s:s:d es_ES en_US -f && \
./magento setup:di:compile && \
chmod -R 775 pub/static/ pub/media/ var/
end=`date +%s%N
runtime=$(bc <<< "scale=9;($end-$start)/1000000000")
echo "" && echo "" && echo -e "\e[34mTOTAL EXECUTION TIME: \e[1m\e[93m$runtime\e[0m"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.