Skip to content

Commit 525fff9

Browse files
committed
feat: added option snippet: boolean - fixes #1882
1 parent f6336ea commit 525fff9

File tree

6 files changed

+80
-30
lines changed

6 files changed

+80
-30
lines changed

package-lock.json

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/browser-sync/lib/async.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ module.exports = {
152152
done(null, {
153153
options: {
154154
urls: utils.getUrlOptions(bs.options),
155-
snippet: connectUtils.scriptTags(bs.options),
155+
snippet: connectUtils.enabled(bs.options)
156+
? connectUtils.scriptTags(bs.options)
157+
: false,
156158
scriptPaths: Immutable.fromJS(
157159
connectUtils.clientScript(bs.options, true)
158160
),

packages/browser-sync/lib/connect-utils.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ function getPath(options, relative, port) {
1313
}
1414

1515
var connectUtils = {
16+
/**
17+
* Allow users to disable the Browsersync snippet
18+
* @param {Immutable.Map} options
19+
* @returns {Boolean}
20+
*/
21+
enabled: function(options) {
22+
const userValue = options.get("snippet");
23+
if (typeof userValue === "boolean") {
24+
return userValue
25+
}
26+
return true
27+
},
1628
/**
1729
* @param {Immutable.Map} options
1830
* @returns {String}

packages/browser-sync/lib/server/utils.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,14 @@ var serverUtils = {
304304
);
305305

306306
// Snippet
307-
rules.push(
308-
snippetUtils.getRegex(
309-
bs.options.get("snippet"),
310-
bs.options.get("snippetOptions")
311-
)
312-
);
307+
if (bs.options.get("snippet")) {
308+
rules.push(
309+
snippetUtils.getRegex(
310+
bs.options.get("snippet"),
311+
bs.options.get("snippetOptions")
312+
)
313+
);
314+
}
313315

314316
// User
315317
bs.options.get("rewriteRules").forEach(function(rule) {

packages/browser-sync/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"scripts": {
2424
"build": "npm run build:server",
2525
"build:server": "tsc",
26+
"build:watch": "tsc --watch",
2627
"env": "node ./test/env.js",
2728
"lodash": "lodash include=isUndefined,isFunction,toArray,includes,union,each,isString,merge,isObject,set exports=node",
2829
"prepublishOnly": "npm run build",

packages/browser-sync/test/specs/e2e/e2e.options.snippet.js

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,41 @@ describe("E2E snippet: false", function() {
166166
.set("accept", "text/html")
167167
.expect(200)
168168
.end(function(err, res) {
169-
if (res.text.indexOf(instance.options.get("snippet")) > -1) {
170-
return done(new Error("snippet present"));
169+
if (res.text.indexOf("__bs_script__") > -1) {
170+
return done(new Error("snippet present when it shouldn't be"));
171+
}
172+
done();
173+
});
174+
});
175+
});
176+
177+
describe("E2E snippet: true", function() {
178+
var instance;
179+
180+
before(function(done) {
181+
browserSync.reset();
182+
var config = {
183+
server: {
184+
baseDir: "test/fixtures"
185+
},
186+
open: false,
187+
snippet: true,
188+
};
189+
instance = browserSync(config, done).instance;
190+
});
191+
192+
after(function() {
193+
instance.cleanup();
194+
});
195+
196+
it("does not add the snippet when snippet: false", function(done) {
197+
request(instance.server)
198+
.get("/iframe.html")
199+
.set("accept", "text/html")
200+
.expect(200)
201+
.end(function(err, res) {
202+
if (res.text.indexOf("__bs_script__") === -1) {
203+
return done(new Error("snippet absent when it shouldn't be"));
171204
}
172205
done();
173206
});

0 commit comments

Comments
 (0)