Skip to content

Instantly share code, notes, and snippets.

module.exports = function transformer(file, api) {
const j = api.jscodeshift;
const ast = j(file.source);
ast.find(j.CallExpression, {
callee: {
name: 'require'
}
}).forEach(path => {
const args = path.node.arguments;
module.exports = function transformer(file, api) {
const j = api.jscodeshift;
const ast = j(file.source);
ast.find(j.CallExpression, {
callee: {
name: 'define'
}
}).forEach(path => {
const args = path.node.arguments;
@DrewML
DrewML / emit-all-plugin.js
Last active October 12, 2023 22:29
Output every file in a webpack build to the specified dist directory in the webpack config. Each file is output after having each loader run against it, but before the webpack module wrapper is added.
const path = require('path');
module.exports = class EmitAllPlugin {
constructor(opts = {}) {
this.ignorePattern = opts.ignorePattern || /node_modules/;
}
shouldIgnore(path) {
return this.ignorePattern.test(path);
}

webpack Build Performance Tips

Limit the number of extensions passed to the resolver

When the resolver is working through its version of the node module resolution algorithm, it has to perform a large number of file system operations to determine what an ambiguous require/import string is. This means, every extension webpack needs to look for can drastically increase the number of disk hits necessary when enhanced-resolve is attempting to locate an import.

Suggestion

const jsdom = require("jsdom").jsdom;
const doc = jsdom(undefined, { url: "http://localhost" });
const jsdomWindow = doc.defaultView;
global.document = doc;
global.window = new Proxy(jsdomWindow, {
set(target, property, value) {
global[property] = value;
return value;
}
const window = {
a: 1
};
global = new Proxy(global, {
get(target, prop, receiver) {
if (target[prop] !== undefined) {
return target[prop];
}
return window[prop];
// Determine which `assert.x` methods are used in a codebase
// Run with jscodeshift using the --dry option
export default function transformer(file, api) {
const { jscodeshift: j, stats} = api;
const root = j(file.source);
root.find(j.CallExpression, {
callee: {
object: { name: 'assert' }
@DrewML
DrewML / Theming-Slack-OSX.md
Last active January 25, 2022 00:53
Theming Slack for OSX

Theming Slack for OSX

So, you love Slack, but you hate applications with large white backgrounds? Why not use Dark Mode!

Unfortunately, Slack does not have a Dark Mode, although it's on their list of possibilities.

But, don't fret - there is a solution! Because the slack native desktop apps are just wrappers around a web app, we can inject our own CSS to customize the application to our liking.

How to (OSX Only)

@DrewML
DrewML / slack-slashes.md
Created May 1, 2016 16:36
"Secret" Slack slash commands

"Secret" Slack Slash Commands

Enable Web Inspector

/macgap.app.enabledevelopertools()

Assign a color (using hex code) to any users name

/color andrew #000000

Change Status (Doesn't seem to work)

/status