我想为我的chrome扩展重新加载每次我保存在扩展文件夹中的文件,而不必显式点击“重新加载”在chrome://extensions/。这可能吗?
编辑:我知道我可以更新Chrome重新加载扩展的间隔,这是一个中途的解决方案,但我宁愿让我的编辑器(emacs或textmate)触发保存重新加载或要求Chrome监控目录的变化。
我想为我的chrome扩展重新加载每次我保存在扩展文件夹中的文件,而不必显式点击“重新加载”在chrome://extensions/。这可能吗?
编辑:我知道我可以更新Chrome重新加载扩展的间隔,这是一个中途的解决方案,但我宁愿让我的编辑器(emacs或textmate)触发保存重新加载或要求Chrome监控目录的变化。
当前回答
我已经分叉LiveJS,以允许实时重新加载打包的应用程序。只需将文件包含在应用程序中,每次保存文件时,应用程序将自动重载。
其他回答
苹果只
使用扩展Reloader:
使用打印稿
将你的观察者添加到你的项目中:yarn Add tsc-watch 向package.json添加脚本命令
...
"scripts": {
"dev": "tsc-watch --onSuccess \"open -a '/Applications/Google Chrome.app' 'http://reload.extensions'\""
},
...
运行脚本yarn dev
使用JavaScript
将你的watcher添加到你的项目中:yarn Add watch-cli 向package.json添加脚本命令
...
"scripts": {
"dev": "watch -p \"**/*.js\" -c \"open -a '/Applications/Google Chrome.app' 'http://reload.extensions'\""
},
...
运行脚本yarn dev
额外的好处:在Extensions Reloader选项中打开“reload current tab”,这样它就会在做出更改后重新加载:
在任何场合或事件中
chrome.runtime.reload();
将重新加载您的扩展(docs)。您还需要更改舱单。Json文件,添加:
...
"permissions": [ "management" , ...]
...
如果你有一台Mac,最简单的方法就是使用Alfred App!
只需使用Powerpack获取Alfred App,然后添加下面链接中提供的工作流,并自定义你想要的热键(我喜欢使用⌘+ + R)。
现在,每次你使用热键,谷歌Chrome浏览器将重新加载,无论你在那个时刻的应用程序。
如果你想使用其他浏览器,打开AppleScript在阿尔弗雷德首选工作流程和替换“谷歌Chrome”与“Firefox”,“Safari”,…
我还将在这里显示在ReloadChrome中使用的/usr/bin/osascript脚本的内容。Alfredworkflow文件,这样你就可以看到它在做什么。
tell application "Google Chrome"
activate
delay 0.5
tell application "System Events" to keystroke "r" using command down
delay 0.5
tell application "System Events" to keystroke tab using command down
end tell
工作流文件为ReloadChrome.alfredworkflow。
我已经做了一个简单的可嵌入脚本热重载:
https://github.com/xpl/crx-hotreload
它监视扩展名目录中的文件更改。当检测到更改时,它重新加载扩展并刷新活动选项卡(以重新触发更新的内容脚本)。
通过检查文件的时间戳来工作 支持嵌套目录 在生产配置中自动禁用自身
正如文档中提到的:下面的命令行将重新加载应用程序
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --load-and-launch-app=[path to the app ]
所以我只是创建了一个shell脚本,并从gulp调用该文件。超级简单:
var exec = require('child_process').exec;
gulp.task('reload-chrome-build',function(cb){
console.log("reload");
var cmd="./reloadchrome.sh"
exec(cmd,function (err, stdout, stderr) {
console.log("done: "+stdout);
cb(err);
}
);});
在脚本上运行必要的监视命令,并在需要时调用重载任务。干净,简单。