diff --git a/README.md b/README.md
index fc2c2ae..f8ade74 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,13 @@ Here's [a blog post explaining it](https://60devs.com/hot-reloading-for-chrome-e
- Works by checking timestamps of files
- Supports nested directories
- Automatically disables itself in production
-- And it's just a 50 lines of code!
+- And it's just 50 lines of code!
+
+## Options
+
+| Name | Value | Description |
+|--------------|----------------------------|----------------------------------------|
+| `reloadTab` | `boolean` (default: true) | reload the active tab when crx changes.|
## How To Use
@@ -31,4 +37,10 @@ It is also available as NPM module:
npm install crx-hotreload
```
-Then use a `require` (or `import`) to execute the script.
+In your script:
+```
+const hotReload = require('crx-hotreload');
+hotReload.default({
+ reloadTab: false
+});
+```
diff --git a/hot-reload.js b/hot-reload.js
index de5e58c..572fe6d 100644
--- a/hot-reload.js
+++ b/hot-reload.js
@@ -17,36 +17,53 @@ const timestampForFilesInDirectory = dir =>
filesInDirectory (dir).then (files =>
files.map (f => f.name + f.lastModifiedDate).join ())
-const reload = () => {
+const reload = (reloadTab) => {
- chrome.tabs.query ({ active: true, currentWindow: true }, tabs => { // NB: see https://github.com/xpl/crx-hotreload/issues/5
+ if (reloadTab) {
+ chrome.tabs.query ({ active: true, currentWindow: true }, tabs => { // NB: see https://github.com/xpl/crx-hotreload/issues/5
- if (tabs[0]) { chrome.tabs.reload (tabs[0].id) }
+ if (tabs[0]) { chrome.tabs.reload (tabs[0].id) }
+ chrome.runtime.reload ()
+ })
+ } else {
chrome.runtime.reload ()
- })
+ }
}
-const watchChanges = (dir, lastTimestamp) => {
+const watchChanges = (dir, reloadTab, lastTimestamp) => {
timestampForFilesInDirectory (dir).then (timestamp => {
if (!lastTimestamp || (lastTimestamp === timestamp)) {
- setTimeout (() => watchChanges (dir, timestamp), 1000) // retry after 1s
+ setTimeout (() => watchChanges (dir, reloadTab, timestamp), 1000) // poll every 1s
} else {
- reload ()
+ reload (reloadTab)
}
})
}
-chrome.management.getSelf (self => {
-
- if (self.installType === 'development') {
-
- chrome.runtime.getPackageDirectoryEntry (dir => watchChanges (dir))
+const defaultOpts = {
+ reloadTab: true
+};
+
+if (typeof module === 'object') {
+ exports.default = (opts) => {
+ const combinedOpts = Object.assign({}, defaultOpts, opts);
+ chrome.management.getSelf (self => {
+ if (self.installType === 'development') {
+ chrome.runtime.getPackageDirectoryEntry (dir => watchChanges (dir, combinedOpts.reloadTab))
+ }
+ })
}
-})
+} else {
+ chrome.management.getSelf (self => {
+ if (self.installType === 'development') {
+ chrome.runtime.getPackageDirectoryEntry (dir => watchChanges (dir, defaultOpts.reloadTab))
+ }
+ })
+}