저는 Vim에서 HTML 파일을 편집하고 있는데 아래에있는 파일이 변경 될 때마다 브라우저가 새로 고침되기를 원합니다.
파일 변경 사항을 수신하고 파일 변경 사항을 저장할 때마다 페이지를 자동으로 새로 고침하는 Chrome 용 플러그인이 있습니까? Firefox 용 XRefresh가 있다는 것을 알고 있지만 XRefresh를 전혀 실행할 수 없습니다.
직접 스크립트를 작성하는 것이 얼마나 어려울까요?
저는 Vim에서 HTML 파일을 편집하고 있는데 아래에있는 파일이 변경 될 때마다 브라우저가 새로 고침되기를 원합니다.
파일 변경 사항을 수신하고 파일 변경 사항을 저장할 때마다 페이지를 자동으로 새로 고침하는 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=ko
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 또는 What-have-you 등 사용하는 개발 프레임 워크 또는 언어와 독립적입니다.
나는 여기 에서 현재 받아 들여지는 대답보다 쉽고 일반적이라고 생각하기 때문에이 대답을 거의 그대로 여기 에서 복사했습니다 .
php -S localhost:8080
python3 -m http.server
뿐만 아니라 다른 언어 / 도구에 대한 더 많은이 .
Tincr은 아래의 파일이 변경 될 때마다 페이지를 새로 고치는 Chrome 확장 프로그램입니다.
fswatch ( brew install fswatch
)를 설치했다고 가정하고 Handy Bash 한 줄 OS X 용 . 임의의 경로 / 파일을 감시하고 변경 사항이있을 때 활성 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 용 알파 버전. https://github.com/livereload/LiveReload2 에서 오픈 소스
Gulp 를 사용 하여 파일을보고 Browsersync 를 사용 하여 브라우저 를 다시로드합니다.
단계는 다음과 같습니다.
명령 줄에서 다음을 실행합니다.
npm install --save-dev gulp 브라우저 동기화
다음 내용으로 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 파일에 특수 태그를 즉시 삽입함으로써 이루어집니다.
LivePage 크롬 확장 프로그램은 쉽게 로컬 파일의 변경 사항을 모니터링하도록 설정할 수 있습니다.
나는 이것이 오래된 질문이라는 것을 알고 있지만 누군가에게 도움이된다면 다시로드가 있습니다. 그것을 해결 npm 패키지가 있습니다.
서버에서 실행 중이 아니거나 오류가 발생한 경우 Live.js doesn't support the file protocol. It needs http.
그냥 설치하세요 :
npm install reload -g
그런 다음 index.html 디렉토리에서 다음을 실행하십시오.
reload -b
변경 사항을 저장할 때마다 새로 고쳐지는 서버가 시작됩니다.
서버 또는 다른 곳에서 실행하는 경우 다른 많은 옵션이 있습니다. 자세한 내용은 참조를 확인하십시오!
GNU / Linux를 사용하는 경우 Falkon 이라는 멋진 브라우저를 사용할 수 있습니다 . Qt WebEngine을 기반으로합니다 . Firefox 또는 Chromium과 비슷하지만 파일이 업데이트되면 페이지를 자동으로 새로 고칩니다. 자동 새로 고침은 vim, nano 또는 atom, vscode, 대괄호, geany, 마우스 패드 등을 사용하든별로 중요하지 않습니다.
Arch Linux에서는 Falkon을 매우 쉽게 설치할 수 있습니다.
sudo pacman -S falkon
여기 스냅 패키지가 있습니다.
내가 가끔 사용하는 빠른 해결책은 화면을 두 개로 나누고 변경할 때마다 문서 xD를 클릭하는 것입니다.
<script>
document.addEventListener("click", function(){
window.location.reload();
})
</script>
node.js에서 gulp.js + gulp-watch (각각 작업 실행기 및 변경 리스너)를 사용하여 primus.js (웹 소켓)를 연결할 수 있으므로 gulp는 브라우저 창에서 html, js가 새로 고쳐 져야 함을 알 수 있습니다. 등 변경합니다. 이것은 OS에 구애받지 않으며 로컬 프로젝트에서 작동합니다.
여기서 페이지는 디스크에서 파일로로드되지 않고 웹 서버에 의해 제공되며 실제로는 실제와 비슷합니다.
이것은 나를 위해 작동합니다 (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에서) 를 설치 하고 args를 --class
선호하는 브라우저 및 터미널의 실제 이름으로 변경 해야 할 수 있습니다 .
설명한대로 스크립트를 시작하고 브라우저에서 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
단점은 프로젝트별로 이것을 설정해야하고 루비에 익숙하다면 도움이된다는 것입니다.
또한 Tincr 크롬 확장 프로그램을 사용했지만 프레임 워크 및 파일 구조와 밀접하게 결합 된 것으로 보입니다. (저는 jekyll 프로젝트를 위해 tincr을 연결하려고 시도했지만 포함, 부분 또는 레이아웃 변경을 고려하지 않고 변경 사항에 대해 단일 파일 만 볼 수있었습니다). 그러나 Tincr은 일관되고 사전 정의 된 파일 구조를 가진 레일과 같은 프로젝트에서 즉시 사용할 수 있습니다.
Tincr은 재로드에 대한 모든 포함 일치 패턴을 허용하면 훌륭한 솔루션이 될 수 있지만 프로젝트는 여전히 기능 세트가 제한적입니다.
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
됩니다. xargs
는 해당 1
s를 읽고 -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