私はVimでHTMLファイルを編集していて、その下にあるファイルが変更されるたびにブラウザを更新したい。
ファイルへの変更をリッスンし、ファイルへの変更を保存するたびにページを自動更新するGoogle Chromeのプラグインはありますか?Firefox用のXRefreshがあることは知っていますが、XRefreshをまったく実行できませんでした。
これを自分で行うスクリプトを書くのはどれほど難しいでしょうか。
私はVimでHTMLファイルを編集していて、その下にあるファイルが変更されるたびにブラウザを更新したい。
ファイルへの変更をリッスンし、ファイルへの変更を保存するたびにページを自動更新するGoogle Chromeのプラグインはありますか?Firefox用のXRefreshがあることは知っていますが、XRefreshをまったく実行できませんでした。
これを自分で行うスクリプトを書くのはどれほど難しいでしょうか。
回答:
OSXを使用していないと思いますか?それ以外の場合は、applescriptを使用して次のようにすることができます。
http://brettterpstra.com/watch-for-file-changes-and-refresh-your-browser-automatically/
「自動更新プラス」と呼ばれるクロムのプラグインもあり、x秒ごとにリロードを指定できます。
https://chrome.google.com/webstore/detail/auto-refresh-plus/oilipfekkmncanaajkapbpancpelijih?hl=en
keyword
にwatch_keyword
次の行に:if (URL of atab contains "#{keyword}") then
純粋なJavaScriptソリューション!
以下をあなたのに追加してください<head>
:
<script type="text/javascript" src="http://livejs.com/live.js"></script>
どうやって?Live.jsを含めるだけで、サーバーに連続したHEADリクエストを送信することにより、ローカルCSSとJavaScriptを含む現在のページを監視します。CSSへの変更は動的に適用され、HTMLまたはJavaScriptの変更によりページがリロードされます。それを試してみてください!
どこ?Live.jsは、別の方法で証明されるまで、Firefox、Chrome、Safari、Opera、IE6 +で動作します。Live.jsは、Ruby、Handcraft、Python、Django、NET、Java、Php、Drupal、Joomlaなど、使用している開発フレームワークや言語に依存しません。
php -S localhost:8080
Tincrは、下のファイルが変更されるたびにページを更新するChrome拡張機能です。
fswatch(brew install fswatch
)がインストールされていると仮定して、OS X用のHandy Bashワンライナー。任意のパス/ファイルを監視し、変更があるとアクティブなChromeタブを更新します。
fswatch -o ~/path/to/watch | xargs -n1 -I {} osascript -e 'tell application "Google Chrome" to tell the active tab of its first window to reload'
ここでfswatchの詳細を参照してください:https ://stackoverflow.com/a/13807906/3510611
http://livereload.com/-OS Xのネイティブアプリ、WindowsのAlphaバージョン。https://github.com/livereload/LiveReload2でオープンソース化
Gulpを使用してファイルを監視し、Browsersyncを使用してブラウザーをリロードします。
手順は次のとおりです。
コマンドラインで実行します
npm install --save-dev gulp browser-sync
次の内容でgulpfile.jsを作成します。
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
gulp.task('serve', function() {
browserSync.init({
server: {
baseDir: "./"
}
});
gulp.watch("*.html").on("change", reload);
});
走る
ガルプサーブ
HTMLを編集して保存し、ブラウザのリロードを確認します。魔法は、特別なタグをHTMLファイルにその場で挿入することによって行われます。
ライブページ Chromeの拡張機能を簡単にローカルファイルの変更を監視するように設定することができます。
私はこれが古い質問であることを知っていますが、誰かを助けるために、リロードがありますそれを解決する npmパッケージがあります。
サーバーで実行していないか、エラーを受け取った場合 Live.js doesn't support the file protocol. It needs http.
インストールするだけです:
npm install reload -g
次に、index.htmlディレクトリで次のコマンドを実行します。
reload -b
変更を保存するたびに更新されるサーバーを起動します。
サーバー上で実行している場合に備えて、他にも多くのオプションがあります。詳細についてはリファレンスを確認してください!
Refreschroと呼ばれるOS XとChromeのJavaアプリがあります。ローカルファイルシステム上の特定のファイルセットを監視し、変更が検出されるとChromeをリロードします。
GNU / Linuxを使用している場合は、Falkonと呼ばれるかなりクールなブラウザーを使用できます。Qt WebEngineに基づいています。これは、FirefoxやChromiumと同じですが、ファイルが更新されるとページが自動的に更新されます。自動更新は、vim、nano、atom、vscode、ブラケット、geany、マウスパッドなどを使用するかどうかには関係ありません。
Arch Linuxでは、Falkonを非常に簡単にインストールできます。
sudo pacman -S falkon
ここにがスナップパッケージです。
私が時々使用する簡単な解決策は、画面を2つに分割し、変更が行われるたびにドキュメントxDをクリックすることです。
<script>
document.addEventListener("click", function(){
window.location.reload();
})
</script>
node.jsでは、primus.js(websockets)をgulp.js + gulp-watch(それぞれタスクランナーと変更リスナー)と結び付けることができるので、html、js 、など、変更します。これはOSに依存せず、ローカルプロジェクトで動作しています。
ここでは、ページはWebサーバーによって提供され、ディスクからファイルとして読み込まれるのではなく、実際にはより本物に似ています。
これは私のために(Ubuntuで)動作します:
#!/bin/bash
#
# Watches the folder or files passed as arguments to the script and when it
# detects a change it automatically refreshes the current selected Chrome tab or
# window.
#
# Usage:
# ./chrome-refresher.sh /folder/to/watch
TIME_FORMAT='%F %H:%M'
OUTPUT_FORMAT='%T Event(s): %e fired for file: %w. Refreshing.'
while inotifywait --exclude '.+\.swp$' -e modify -q \
-r --timefmt "${TIME_FORMAT}" --format "${OUTPUT_FORMAT}" "$@"; do
xdotool search --onlyvisible --class chromium windowactivate --sync key F5 \
search --onlyvisible --class gnome-terminal windowactivate
done
inotifyおよびxdotoolパッケージ(sudo apt-get install inotify-tools xdotool
Ubuntu)をインストール--class
し、args を、使用するブラウザーおよび端末の実際の名前に変更する必要がある場合があります。
説明に従ってスクリプトを開始し、ブラウザでindex.htmlを開きます。vimで保存するたびに、スクリプトはブラウザーのウィンドウにフォーカスし、それを更新して、ターミナルに戻ります。
xdotool search --name 127.0.0.1 windowactivate key F5
localhost(127.0。 0.1)もちろんです。それをスクリプトにプラグインする必要があります。
私が見つけた最も柔軟なソリューションは、ガードサーバーとペアになったChrome LiveReload拡張機能です。
プロジェクト内のすべてのファイル、または指定したファイルのみを監視します。Guardfile構成のサンプルを以下に示します。
guard 'livereload' do
watch(%r{.*\.(css|js|html|markdown|md|yml)})
end
欠点は、これをプロジェクトごとに設定する必要があり、Rubyに慣れている場合に役立ちます。
Tincrクロム拡張機能も使用しましたが、フレームワークやファイル構造と密接に関連しているようです。(私はjekyllプロジェクトのtincrを接続しようとしましたが、インクルード、部分的またはレイアウトの変更を考慮せずに、単一のファイルの変更を監視することしかできませんでした)。ただし、Tincrは、一貫性のある事前定義されたファイル構造を持つレールなどのプロジェクトですぐに使用できます。
Tincrは、リロードにすべての包括的な一致パターンを許可する場合に優れたソリューションになりますが、プロジェクトの機能セットはまだ限られています。
これは、単純なpythonスクリプトを使用して行うことができます。
OSXに対するattekeiの回答に基づく:
$ brew install fswatch
これらすべてを次のようにチャックしますreload.scpt
。
function run(argv) {
if (argv.length < 1) {
console.log("Please supply a (partial) URL to reload");
return;
}
console.log("Trying to reload: " + argv[0]);
let a = Application("Google Chrome");
for (let i = 0; i < a.windows.length; i++) {
let win = a.windows[i];
for (let j = 0; j < win.tabs.length; j++) {
let tab = win.tabs[j];
if (tab.url().startsWith("file://") && tab.url().endsWith(argv[0])) {
console.log("Reloading URL: " + tab.url());
tab.reload();
return;
}
}
}
console.log("Tab not found.");
}
これfile://
により、最初のコマンドライン引数で始まり、最初のタブで終わる最初のタブが再読み込みされます。必要に応じて調整できます。
最後に、このようなことをします。
fswatch -o ~/path/to/watch | xargs -n1 osascript -l JavaScript reload.scpt myindex.html
fswatch -o
各変更イベントで変更されたファイルの数を1行に1つずつ出力します。通常は単に印刷されます1
。xargs
これら1
のを読み込み、-n1
それぞれを引数として新しいの実行に渡しますosascript
(無視されます)。
tab.title.includes(argv[0])
条件として使用することで、ページタイトルを一致させることができます。これは、URLよりも厄介ではなく、file://ではなくローカルサーバーを使用するときに機能します。
(function() {
setTimeout(function(){
window.location.reload(true);
}, 100);
})();
このコードをファイルlivereload.jsに保存し、次のようにHTMLスクリプトの下部に含めます。
<script type="text/javascript" src="livereload.js"></script>
これにより、100ミリ秒ごとにページが更新されます。コードで行った変更はすぐに目に見えます。
さて、これが私の大まかなAuto Hotkeyソリューションです(Linuxでは、Auto Keyを試してください)。保存のキーボードショートカットが押されたら、ブラウザをアクティブにし、再読み込みボタンをクリックして、エディタに戻ります。私は他のソリューションを実行するのにうんざりしています。エディターが自動保存を行う場合は機能しません。
^s:: ; '^' means ctrl key. '!' is alt, '+' is shift. Can be combined.
MouseGetPos x,y
Send ^s
; if your IDE is not that fast with saving, increase.
Sleep 100
; Activate the browser. This may differ on your system. Can be found with AHK Window Spy.
WinActivate ahk_class Chrome_WidgetWin_1
WinWaitActive ahk_class Chrome_WidgetWin_1
Sleep 100 ; better safe than sorry.
;~ Send ^F5 ; I dont know why this doesnt work ...
Click 92,62 ; ... so lets click the reload button instead.
; Switch back to Editor. Can be found with AHK Window Spy.
WinActivate ahk_class zc-frame
WinWaitActive ahk_class zc-frame
Sleep 100 ; better safe than sorry.
MouseMove x,y
return