1

さようなら。

私が達成しようとしていること: Javascript を編集しながら play を使用し、chrome dev ツールでライブのファイルを減らします。

わかったこと: プロジェクトの「パブリック」フォルダーを chrome dev ツールのリソース タブのワークスペースに追加すると、すべてが期待どおりに機能します。chrome dev ツールで行われた変更は、対応する css および javascript ファイルに保存され、ページはリアルタイムで変更を反映します。「app/assets/stylesheets」ディレクトリを chrome dev ワークスペースに追加すると、同じことが起こります --> コンソールでファイルに加えられた変更は、ディスクに保存されたファイルに保存されます。

さらに、コンソールから 'activator ~run' を実行すると、コンパイルが必要なファイルに加えられた変更により、再コンパイルがトリガーされます。開発ツールで少ないコードを変更できるようになりました。変更箇所をローカル ファイルに書き込み、play を再コンパイルします。すべてがうまくてダンディですが、悲しいことに-そこですべてが終わりました:/

問題: 私は less で作業していますが、less は不思議な場所にコンパイルされます (正確な場所はまだわかりません)。ディレクトリがわからない場合、css ファイル (less ファイルからコンパイルされたもの) を chrome dev コンソールのワークスペースに追加できません。コンソールに「利用できません」というエラーが表示されます。最初に、実際にページのスタイルを設定するcssがプロジェクトの「ターゲット」フォルダーに保存されていると思いましたが、そうではありません。(対象フォルダをワークスペースに追加したのですが、このフォルダ内のcssファイルを変更してもページに反映されませんでした)

私の質問:less ファイルからコンパイルされた後の css はどこにありますか? または、ブラウザーで less (またはコンパイル済みのスクリプト/スタイル ソース) のライブ編集を有効にする他の方法はありますか?

4

2 に答える 2

1

わかりました。Play プロジェクトのより少ないファイルをライブで編集し、変更をソース ファイルに保存する方法を疑問に思っている皆さんのために、私がそれを達成した方法を次に示します。このソリューションは、スタイリングにあまり使用しない playframework 開発者向けです - ただし、すべての css プリプロセッサで同様の方法で問題を解決できるはずです。Chrome Dev Tool を使用してコードをライブ編集していることに注意してください。

まず最初に、次のコード行を build.sbt に追加する必要があります。

//enable source Map for lesscompilation
LessKeys.sourceMap in (Assets, LessKeys.less) := true

Chrome Dev Tool が css を対応する lessfiles にマップできるようにするには、ソース マップが必要です。再コンパイル後、プロジェクトを chrome でリロードし、f12 を押して Chrome Dev Tool を起動します。Less ファイルは正しくマッピングされている必要があります。

https://s3.amazonaws.com/robdodson/images/less-preview.png

サイドパネルが「modules.less」を指していることに注意してください --> このポインターをクリックすると、ソースパネルが表示され、対応するファイルが開きます。入ってファイルを編集し、ctrl s を押して保存しても何も起こりません。これは、Chrome Dev Tool が変更をディスクに保存する場所を認識していないためです。


変更を保存する場所を Chrome Dev Tool に指示するには、ワークスペースを設定する必要があります。これを行うには、Chrome Dev Tool で「ソース」パネルを開きます。左側には、ファイル ツリーがあります。そのパネルを右クリックし、[フォルダをワークスペースに追加] をクリックします。ワークスペースは、ローカル ファイルを URL に、またはその逆にマップします。Chrome Dev Tool ワークスペースの詳細な説明へのリンクは次のとおりです。

https://developer.chrome.com/devtools/docs/workspaces

私が選ばなければならなかったフォルダはここにありました:

pathToYourProject/target/web/public/main

@Bass Jobsenが彼の投稿で述べたように、これは混乱を招きます。

https://www.playframework.com/documentation/2.0/AssetsLessは次のことを示しています。

マネージド リソースはアプリケーションのパブリック フォルダーに直接コピーされるのではなく、target/scala-2.9.1/resources_managed 内の別のフォルダーに保持されることに注意してください。

しかし私の場合、「target/sacal-2.9.1」に「resources_managed」というフォルダがありませんでした。数時間混乱した後、ページで使用されているファイルが「pathToYourProject/target/web/public/main」にあるファイルに対応していることがわかりました。私だけかもしれませんが、コメントよろしくお願いします。


ワークスペースを構成した後も、ライブ編集は機能しません。これは、コンパイルの必要性が少ないためです。では、少ないファイルを再コンパイルしないと、css は何かが変更されたことをどうやって知ることができるでしょうか? ライブ編集を有効にするには、less ファイルを監視し、変更が発生した場合はそれらを css にコンパイルする必要があります。私はそのタスクにうなり声を使用しました:

http://gruntjs.com/getting-started

grunt については詳しく説明しませんが、十分に文書化されています。私が使用する gruntfile を投稿します。ご覧のとおり、grunt は「target/web/public/main/stylesheets」フォルダー内のより少ないファイルのすべての変更をリッスンします。変更が発生すると、ファイル「final.less」を再コンパイルするタスク「less」が開始されます (これは、他のすべての less-files をインポートするファイルです)。再コンパイル後、grunt はすべての .less ファイルをプロジェクトの「app/assets/stylesheets」ディレクトリにコピーします。これは、Chrome Dev Tool で less ファイルに加えられた変更をプロジェクトの実際の less ファイルに反映するために必要です。使った

ファイルは次のとおりです。

module.exports = function(grunt){
    grunt.initConfig({
        less: {
              development:{
                options:{
                    sourceMap: true,
              },
                files:{
                    'target/web/public/main/stylesheets/final.css':'target/web/public/main/stylesheets/final.less',
                }
              }
        },
        watch: {
            styles:{
                options:{
                    livereload: true,
                    spawn: false,
                    event: ['added','deleted','changed']
                },
                files:['target/web/public/main/stylesheets/**/*.less'],
                tasks:['less','copy']
            }
        },
        copy: {
            main: {
                files: [
                    {expand: true, cwd: 'target/web/public/main/stylesheets/', src:['**/*.less'], dest:'app/assets/stylesheets/'}
                ]
            }
        }

    });

    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-contrib-watch');
}


それが、Chrome Dev Tool で play を使って less のライブ編集をセットアップする方法です。開発者ツールの要素パネルで less ファイルを編集できないことに注意してください。そこに変更を加えると、less ファイルと css ファイルのマッピングが削除されます。ただし、プロパティまたはクラスを Ctrl キーを押しながらクリックすると、ソース パネルの対応するファイルおよびクラス/プロパティに移動します。保存された変更により、少ないファイルとブームの再コンパイルがトリガーされます->ページをライブ編集しています:)この投稿で誰かを助けることができれば幸いです。

リンクとソース:

于 2014-12-22T08:03:58.543 に答える
0

https://www.playframework.com/documentation/2.0/AssetsLessは次のことを示しています。

マネージド リソースはアプリケーションのパブリック フォルダーに直接コピーされるのではなく、target/scala-2.9.1/resources_managed 内の別のフォルダーに保持されることに注意してください。

于 2014-12-20T14:29:58.663 に答える