Magento2:pub / staticフォルダーにcssファイルを再生成


51

Magento 2をインストールし、開発者モードを設定してから、cssファイルとjsファイルを含む1つのモジュールをインストールしました。モジュールは正常に動作し、cssおよびjsファイルはpub / staticフォルダーからレンダリングされます。モジュールディレクトリのcssファイルにcssの変更を加えてコマンドを実行しました

php bin/magento setup:static-content:deploy

しかし、Magentoはpub / static cssファイルに新しい変更を加えていないため、古いcssファイルの内容を取得しています。誰もがpub / staticフォルダにあるcssファイル全体を再生成する方法を知っていますか?


8
参考:Magento 2には開発者モードがあるため、常に静的コンテンツを展開する必要はありません。過去1か月間、静的コンテンツの再デプロイに何時間も費やしていました。だから私のようにならないで、開発者モードに切り替えます(ローカルマシン上。ライブサーバーは
ネイサンメリル

別のバージョンで再生成する理由??? 展開ファイルのバージョンが一致しないという問題があります。magento.stackexchange.com/questions/94502/...
Magento2 Devloper

3
Magentoのは、開発者モードである場合には、静的なファイルへのシンボリックリンクを作成しますが、このために、あなたが持っている必要が起こること.htaccessで、ファイルをpub/static、それはあなたがパブ/静的フォルダ削除した場合、ファイルをシンボリックリンクする方法を知っているので、フォルダ.htaccess、今不足しているが
ヴラドPatruを

@NathanMerrillあなたはとても正しいですが、ほとんどの開発者はドキュメントとすべての答えを読んでいないのに、まだstatic-content:deployコマンドを実行していません。少し残念なのは、Stackexchangeのアカウントを持つ企業のいくつかが時間の無駄
ヴラドPatru

回答:


69

pub / staticを削除する前に、pub / static / .htaccessのバックアップを作成し、再度復元します。そうしないと、すべてのcssとjsに404エラーが表示されます!

  1. 削除pub/static[.htaccessをバックアップして、再度コピー]
    1. 削除する var/cache
    2. 削除する var/composer_home
    3. 削除する var/generation
    4. 削除する var/page_cache
    5. 削除する var/view_preprocessed
    6. 走る php bin/magento setup:static-content:deploy

48
M2は、開発者にとって使いやすいものではありません。
マシューマクレナン

10
@CarCompファイルを手動で削除する必要はありません。magentoはそれの世話をする必要があります。それは非常に迷惑です
クラウディウクレアンガ

10
Uはmagentoを初めて使用する必要があります;)
CarComp

6
pub / staticを削除すると、404エラーを回避するために重要な.htaccessファイルも失われます
。pub

3
「magento」は初めてです。ワット?cssを更新する公式の方法ですか?
府中

20

ここでの回答は、pub / staticフォルダー内の.htaccess削除してはならないこと言及していません

.htaccesを除くすべてのファイルを削除するには、pub / staticディレクトリに入り、実行します

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

その後、実行できます

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

別のバージョンで再生成する理由??? 展開ファイルのバージョンが一致しないという問題があります。magento.stackexchange.com/questions/94502/...
Magento2 Devloper

1
期待どおりに動作しませんでした
クリストフフェレボフ


9

質問は、開発者モードのMagento 2でのjs and css更新です。

  1. 尊敬されているモジュールのJS更新し、pub/static/frontend/namespace/theme/ ... module/js/...ページを更新する前に同じファイルを削除して、ページの更新後に新しいJSファイルがpubフォルダーに生成されるようにします。
  2. 評価の高いモジュールでCSS更新するには、pt 1を実行します。
  3. Lessファイルの更新

magentoのセットアップテーマ ...\dev\tools\grunt\configs\themes.js

いずれかのテーマのサンプルlumaテーマテーマ複製し、xyzと仮定して名前を割り当てます

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

ルートフォルダーでファイル名を変更します:Gruntfile.js.sampleからGruntfile.js

ルートフォルダーでファイル名を変更します:package.json.samplepackage.jsonに

あなたのサイトフォルダにうなり声を上げる必要があります、さもなければnpm経由でインストールします

管理者権限でコマンドプロンプトを開く

grunt exec:themeテーマを展開した後、CMDでサイトフォルダーに移動し、初めてコマンドを押す

その後、grunt less:theme 毎回以下の変更を行うと

あまり使用しないで頻繁に変更を行う場合、grunt watch自動的にヒットしますgrunt less:theme

注:Symlinkエラーが発生する可能性があるため、ファイルに移動し .../app/etc/di.xml、開発が完了するまでローカルのコード(コードの下)を削除するか、このファイルの変更されたコードをサーバーにプッシュしないでください。必要な場合はローカルでのみ必要です

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

7

簡単な方法1

Magento Adminで。System > Tools > Cache Management[ 静的ファイルキャッシュのフラッシュ ]に移動してクリックします。

簡単な方法2

既に存在する cssファイル変更した場合は、対応するファイルを削除するだけでpub/static、ページを更新すると、新しいバージョンのcssファイルが生成されます。それはで動作する開発者モード


通知

  1. 既存のファイルを変更するのではなく、新しいファイルを作成するときに、キャッシュをクリアする必要がある場合もありますphp bin/magento cache:flush

  2. 静的ファイルはマテリアライズではなく動的に生成されるため、デフォルトモード開発者モードで静的ビューファイルをデプロイする必要はありません。(参照:Magentoモードについて

  3. 生産モード、あなたはあり必要php bin/magento setup:static-content:deployphp bin/magento cache:flush私がしようとしない、生産モードをまだ。


6

それでは、他のさまざまな投稿で読んだことや、ここでの私の個人的な経験に基づいて、CSSまたは静的コンテンツを再生成するプロセスです。

php bin/magento setup:upgrade

これにより、実際に必要なものを削除せずに、必要なすべてのキャッシュ/生成/などのファイルが消去されます。

php bin/magento setup:di:compile

これにより、ファイルが再コンパイルされます。最後に:

php bin/magento setup:static-content:deploy

最後のコマンドの後、すべてが新しく新鮮になり、ページを更新するだけです。

- - - ノート - - -

1)これを行う前に、ファイルのパーミッションとowner:userグループが正しく設定されていることを確認してください。これらについては、システム管理者と話し合う必要があるかもしれません。

2)setup:upgradeコマンドが失敗すると、ファイルが削除され、新しいファイルを書き込めなくなる可能性があります。これは、ファイルのアクセス許可のためです。これにより、サイトが破損し、権限を削除してからコマンドを再実行できます。

3)完全にカスタムスクリプトを作成せずに、特定のテーマまたはファイルのみを再コンパイルする方法を(今のところ)見つけていません(誰かが方法を見つけた場合に非常に役立ちます)

誰かが私に何か良いことを知っているなら、私にいくつかのCSSの変更をしなければならなかったのでファイルをコンパイルする12分は私の目には非常に貧弱なデザインだからです。

---編集---

Magento 2にはGruntが関連付けられているため、時間をかけて設定するとCSS / LESSファイルの更新が無限に簡単になります。.sampleファイルは.sampleファイル拡張子を削除するだけで、/ dev / tools / grunt / configsフォルダーにthemes.jsファイルを構成するため、ほとんどのファイルがあります。その後、LESSファイルを更新する必要がある場合は、コマンドラインからgrunt less:-theme--を実行するだけです。

リソース:http : //devdocs.magento.com/guides/v2.0/frontend-dev-guide/css-topics/css_debug.html


開発者モードでphp bin / magento setup:static-content:deployメソッドの提供を停止します
。magentoに

ああ、手動でフォルダーを削除し、.htaccessファイルと関係のない他のファイルを削除し、強制的に再構築するのがより良い方法ですか?ストアを開発者モードに移動しても、すべてのシンボリックリンクがインスタンス化されず、ページのリロード時にCSSが更新されないため、Gruntの使用に関するコメントを追加しました。
バリエ

6

実行することを忘れないでくださいgrunt exec:themegrunt less:themeコマンドどこthemeであなたがで宣言されたテーマthemes.jsイサキのconfigフォルダからファイル(このすべては、開発者のガイドである)、あなたが開発者モードでMagentoのを持っているときに、静的deployコマンドを実行しないでください、Magento2で動作しますSymlinks


1
「開発者モードでmagentoを使用しているときは、静的なdeployコマンドを実行しないでください」<-これは非常に役に立ちました。ありがとう!pub / staticディレクトリのコンテンツ(もちろん.htaccessを除く)を削除し、ページを更新すると、cssファイルへのsymliksが自動的に生成されました。すぐに編集できます。Magento 2は開発者に優しいとは誰が言ったのですか?!私はそれを使用する方法を知っている必要があります。
Rooster242

1
こんにちは、ありがとう、うんざりしない:デフォルトは問題を解決しました
ユスフ・イブラヒム

6

Magentoルートフォルダーで次のコマンドを実行します。

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/

👍🏻背景にREINDEXを実行していると考えたことはありません
セルゲイFilippovの

それとも、Magento 2の質問に対するMagento 1コマンドの回答ですか?
バリー

何のMagentoの1つのコマンドがありません、彼らはMagentoの2からある
ラファエル・コレア・ゴメス

6

この質問については、回答のほとんどが具体的に指摘していない重要な注意事項が1つあります。あなたの場合(使用しているセットアップで)、CSSをpub/staticフォルダーに再生成してもCSSの変更が反映されないのは、var/view_preprocesseddirectorのコンテンツを削除していないからです。このディレクトリ内にはpub/staticphp bin/magento setup:static-content:deployコマンドの実行時にフォルダーにプルされるCSSのキャッシュバージョンがあります。

そのため、再コンパイルすると、Magentoは最初var/view_preprocessedにキャッシュされたCSSのフォルダーを探します。このフォルダーが空の場合、テーマファイルを参照し、コンパイルのためにそのCSSをプルします。

これらの設定は構成可能であるため、目的地にたどり着くために必要なパスを変更する方法がたくさんあります。ただし、特定のセットアップのソリューションの場合:

  1. pub/staticフォルダーからファイルを削除します。rm -rf pub/static/*

  2. var/view_preprocessedフォルダーからファイルを削除します。rm -rf var/view_preprocessed/*

  3. pub静的フォルダーを再コンパイルします。 php bin/magento setup:static-content:deploy

  4. キャッシュをクリアします: php bin/magento cache:clean

  5. ブラウザを更新します。


1
magento2はその後、目に見える場でそれらのモジュールファイルに変更し、開発者モードでは、それらの影響を受けたファイルへのシンボリックリンクを作るならばいいだろう
roman204

それはできますが、私はいつ、どのように頭を動かしていないのですか、私は答えでこれを持ち出しませんでした。di.xml(app/etc/di.xml)ファイルでこれを設定できるグローバル構成ファイルがあります。しかし、テスト中に結果がまちまちでした。少しは、第二の回答で、よりここにあります:magento.stackexchange.com/questions/116605/...
circlesix


5
  1. pub staticを削除します。
  2. pub/static777許可を与える
  3. キャッシュの消去。
  4. 実行: php bin/magento setup:static-content:deploy

新しいcssが表示されます。

注意:

適切なフォルダーとファイルの許可を与えます。

これがあなたのお役に立てば幸いです。


「新しいcssが表示されます。」-私は感謝しませんでした
バリー


1

開発者モードを使用していることを確認してください。

次に、次のコードを実行します。

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

フロントエンドページを更新します。これらの手順で問題が解決しました。


素敵な、それは本当に私に感謝を助ける
Yoesoff

0

ただし、セットアップコマンドに-for --forceフラグを追加できます。

例:

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

0

ここに私の知恵のしずくを落とします。

私はcache_fly.sh基本的に次のことを行うbashスクリプトを使用します。

#!/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"

注:エコーを追加して、それが実行されるのを待っていた私の人生の時間を表示しました。また、Dockerコンテナ内で同じこと./magentoを実行php bin/magentoまたは呼び出すスクリプトです.Dockerを使用している場合は、あなたのものを作成するか、指すことphp bin/magentoができますが、これを読んでいる場合は、私が話していることを知っている必要があります助けを求めて。


0

私の場合はほとんど適応しません

#!/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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.