Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -79,6 +79,7 @@ Once the build finishes, a child process is spawned firing both a python and nod
* `dev`: switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode. **Default: true**
* `safe`: switches script execution process from spawn to exec. If running into problems with spawn, turn this setting on. **Default: false**
* `verbose`: **DEPRECATED** enable for verbose output. **Default: false**
* `quiet`: disables output for internal messages. **Default: false**

### Developing

Expand Down
203 changes: 72 additions & 131 deletions lib/index.js
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,5 @@
'use strict';

var asyncGenerator = function () {
function AwaitValue(value) {
this.value = value;
}

function AsyncGenerator(gen) {
var front, back;

function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};

if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}

function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;

if (value instanceof AwaitValue) {
Promise.resolve(value.value).then(function (arg) {
resume("next", arg);
}, function (arg) {
resume("throw", arg);
});
} else {
settle(result.done ? "return" : "normal", result.value);
}
} catch (err) {
settle("throw", err);
}
}

function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;

case "throw":
front.reject(value);
break;

default:
front.resolve({
value: value,
done: false
});
break;
}

front = front.next;

if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}

this._invoke = send;

if (typeof gen.return !== "function") {
this.return = undefined;
}
}

if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}

AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};

AsyncGenerator.prototype.throw = function (arg) {
return this._invoke("throw", arg);
};

AsyncGenerator.prototype.return = function (arg) {
return this._invoke("return", arg);
};

return {
wrap: function (fn) {
return function () {
return new AsyncGenerator(fn.apply(this, arguments));
};
},
await: function (value) {
return new AwaitValue(value);
}
};
}();

var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
Expand All@@ -137,6 +24,44 @@ var createClass = function () {
};
}();







































var toArray = function (arr) {
return Array.isArray(arr) ? arr : Array.from(arr);
};
Expand All@@ -151,7 +76,8 @@ var defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

var WebpackShellPlugin = function () {
Expand All@@ -163,7 +89,7 @@ var WebpackShellPlugin = function () {

createClass(WebpackShellPlugin, [{
key: 'puts',
value: function puts(error, stdout, stderr) {
value: function puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -220,13 +146,13 @@ var WebpackShellPlugin = function () {
}
}, {
key: 'mergeOptions',
value: function mergeOptions(options, defaults) {
for (var key in defaults) {
value: function mergeOptions(options, defaults$$1) {
for (var key in defaults$$1) {
if (options.hasOwnProperty(key)) {
defaults[key] = options[key];
defaults$$1[key] = options[key];
}
}
return defaults;
return defaults$$1;
}
}, {
key: 'apply',
Expand All@@ -235,13 +161,20 @@ var WebpackShellPlugin = function () {

compiler.plugin('compilation', function (compilation) {
if (_this.options.verbose) {
console.log('Report compilation: ' + compilation);
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
if (!_this.options.quiet) {
console.log('Report compilation: ' + compilation);
//eslint-disable-next-line
console.warn('WebpackShellPlugin [' + new Date() + ']: Verbose is being deprecated, please remove.');
}
}
if (_this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (var i = 0; i < _this.options.onBuildStart.length; i++) {
_this.handleScript(_this.options.onBuildStart[i]);
if (!_this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (var index = 0; index < _this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildStart[index]);
}
if (_this.options.dev) {
_this.options.onBuildStart = [];
Expand All@@ -251,9 +184,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('after-emit', function (compilation, callback) {
if (_this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (var i = 0; i < _this.options.onBuildEnd.length; i++) {
_this.handleScript(_this.options.onBuildEnd[i]);
if (!_this.options.quiet) {
console.log('Executing post-build scripts');
}
for (var index = 0; index < _this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildEnd[index]);
}
if (_this.options.dev) {
_this.options.onBuildEnd = [];
Expand All@@ -264,9 +201,13 @@ var WebpackShellPlugin = function () {

compiler.plugin('done', function () {
if (_this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (var i = 0; i < _this.options.onBuildExit.length; i++) {
_this.handleScript(_this.options.onBuildExit[i]);
if (!_this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (var index = 0; index < _this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1) {
_this.handleScript(_this.options.onBuildExit[index]);
}
}
});
Expand All@@ -275,4 +216,4 @@ var WebpackShellPlugin = function () {
return WebpackShellPlugin;
}();

module.exports = WebpackShellPlugin;
module.exports = WebpackShellPlugin;
8 changes: 4 additions & 4 deletions package.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -34,12 +34,12 @@
},
"homepage": "https://github.com/1337programming/webpack-shell-plugin",
"devDependencies": {
"babel-core": "^6.7.6",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-core": "^6.24.1",
"babel-preset-es2015-rollup": "^3.0.0",
"css-loader": "^0.23.1",
"eslint": "^2.7.0",
"rollup": "^0.25.8",
"rollup-plugin-babel": "^2.4.0",
"rollup": "^0.41.6",
"rollup-plugin-babel": "^2.7.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
Expand Down
55 changes: 41 additions & 14 deletions src/webpack-shell-plugin.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,15 +8,18 @@ const defaultOptions = {
onBuildExit: [],
dev: true,
verbose: false,
safe: false
safe: false,
quiet: false
};

export default class WebpackShellPlugin {
constructor(options) {
this.options = this.validateInput(this.mergeOptions(options, defaultOptions));
this.options = this.validateInput(
this.mergeOptions(options, defaultOptions)
);
}

puts(error, stdout, stderr) {
puts(error) {
if (error) {
throw error;
}
Expand DownExpand Up@@ -72,13 +75,23 @@ export default class WebpackShellPlugin {

compiler.plugin('compilation', (compilation) => {
if (this.options.verbose) {
console.log(`Report compilation: ${compilation}`);
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
if (!this.options.quiet) {
console.log(`Report compilation: ${compilation}`);
//eslint-disable-next-line
console.warn(`WebpackShellPlugin [${new Date()}]: Verbose is being deprecated, please remove.`);
}
}
if (this.options.onBuildStart.length) {
console.log('Executing pre-build scripts');
for (let i = 0; i < this.options.onBuildStart.length; i++) {
this.handleScript(this.options.onBuildStart[i]);
if (!this.options.quiet) {
console.log('Executing pre-build scripts');
}
for (
let index = 0;
index < this.options.onBuildStart.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildStart[index]);
}
if (this.options.dev) {
this.options.onBuildStart = [];
Expand All@@ -88,9 +101,16 @@ export default class WebpackShellPlugin {

compiler.plugin('after-emit', (compilation, callback) => {
if (this.options.onBuildEnd.length) {
console.log('Executing post-build scripts');
for (let i = 0; i < this.options.onBuildEnd.length; i++) {
this.handleScript(this.options.onBuildEnd[i]);
if (!this.options.quiet) {
console.log('Executing post-build scripts');
}
for (
let index = 0;
index < this.options.onBuildEnd.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildEnd[index]);
}
if (this.options.dev) {
this.options.onBuildEnd = [];
Expand All@@ -101,9 +121,16 @@ export default class WebpackShellPlugin {

compiler.plugin('done', () => {
if (this.options.onBuildExit.length) {
console.log('Executing additional scripts before exit');
for (let i = 0; i < this.options.onBuildExit.length; i++) {
this.handleScript(this.options.onBuildExit[i]);
if (!this.options.quiet) {
console.log('Executing additional scripts before exit');
}
for (
let index = 0;
index < this.options.onBuildExit.length;
// eslint-disable-next-line
index += 1
) {
this.handleScript(this.options.onBuildExit[index]);
}
}
});
Expand Down