Prep for addon signing

This commit is contained in:
2025-11-12 15:53:45 -05:00
parent 1eb30b4689
commit 4fc0210529
11 changed files with 356 additions and 10 deletions

View File

@@ -14,3 +14,4 @@ This is currently a WIP, but in active development (as of Nov 2025).
- Add option to keep model loaded vs load each time - Add option to keep model loaded vs load each time
- model load progress monitoring in popup - model load progress monitoring in popup
- Fix webpacked web-llm as it's 0.73MB over Mozilla's signing limit

BIN
addon/assets/icon-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
addon/assets/icon-400.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
addon/assets/icon-48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

125
addon/assets/icon.svg Normal file
View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="400"
height="400"
viewBox="0 0 105.83333 105.83333"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="icon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
showguides="true"
inkscape:zoom="2.5197127"
inkscape:cx="147.43744"
inkscape:cy="181.17145"
inkscape:window-width="2560"
inkscape:window-height="1336"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<sodipodi:guide
position="49.260233,50.600033"
orientation="0,-1"
id="guide273"
inkscape:locked="false" />
<sodipodi:guide
position="54.944998,82.964331"
orientation="1,0"
id="guide275"
inkscape:locked="false" />
</sodipodi:namedview>
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="linearGradient3899">
<stop
style="stop-color:#6f4d67;stop-opacity:0.2;"
offset="0"
id="stop3895" />
<stop
style="stop-color:#976d8b;stop-opacity:1;"
offset="0.30000001"
id="stop3969" />
<stop
style="stop-color:#8d6582;stop-opacity:1;"
offset="0.5"
id="stop3971" />
<stop
style="stop-color:#976d8b;stop-opacity:1;"
offset="0.7037462"
id="stop3967" />
<stop
style="stop-color:#704e68;stop-opacity:0.1959936;"
offset="1"
id="stop3897" />
</linearGradient>
<pattern
inkscape:collect="always"
patternUnits="userSpaceOnUse"
width="5"
height="1"
patternTransform="translate(0,0) scale(10,10)"
id="Strips1_4"
inkscape:stockid="Stripes 1:4">
<rect
style="fill:black;stroke:none"
x="0"
y="-0.5"
width="1"
height="2"
id="rect1960" />
</pattern>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3899"
id="linearGradient3901"
x1="54.903446"
y1="0.098442644"
x2="55.008862"
y2="105.50085"
gradientUnits="userSpaceOnUse" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:url(#linearGradient3901);fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect3061"
width="105.82608"
height="105.82878"
x="0.010078829"
y="0.0010872643"
ry="11.616628" />
<text
xml:space="preserve"
style="font-size:3.175px;fill:#73125d;stroke-width:1;fill-opacity:1;stroke:#dfa5fc;stroke-opacity:1;stroke-dasharray:none"
x="0.56731743"
y="69.356453"
id="text113"><tspan
sodipodi:role="line"
id="tspan111"
style="font-style:oblique;font-variant:normal;font-weight:600;font-stretch:normal;font-size:50.8px;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Semi-Bold Oblique';stroke-width:1;fill:#73125d;fill-opacity:1;stroke:#dfa5fc;stroke-opacity:1;stroke-dasharray:none"
x="0.56731743"
y="69.356453">nms</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -5,10 +5,10 @@
"description": "AI Job Application Assistant", "description": "AI Job Application Assistant",
"homepage_url": "https://git.corrupt.link/liz/nms", "homepage_url": "https://git.corrupt.link/liz/nms",
"icons": { "icons": {
"32": "assets/logo-32.png" "32": "assets/icon-32.png"
}, },
"browser_action": { "browser_action": {
"default_icon": "assets/logo-32.png", "default_icon": "assets/icon-32.png",
"default_title": "Notice Me Senpai", "default_title": "Notice Me Senpai",
"default_popup": "popup/popup.html", "default_popup": "popup/popup.html",
"browser_style": true "browser_style": true
@@ -34,7 +34,10 @@
"browser_specific_settings": { "browser_specific_settings": {
"gecko": { "gecko": {
"id": "nms@cray.software", "id": "nms@cray.software",
"strict_min_version": "58.0" "strict_min_version": "79.0",
"data_collection_permissions": {
"required": ["none"]
}
} }
} }
} }

19
addon/metadata.json Normal file
View File

@@ -0,0 +1,19 @@
{
"summary": {
"en-US": "Job application ML assistant tool with local LLM support"
},
"name": {
"en-US": "Notice Me Senpai"
},
"homepage": "https://git.corrupt.link/liz/nms",
"is_experimental": true,
"categories": [
"other"
],
"version": {
"license": "MPL-2.0",
"compatibility": [
"firefox"
]
}
}

View File

@@ -1,4 +1,4 @@
import { CreateMLCEngine } from "@mlc-ai/web-llm"; import { CreateMLCEngine } from "@mlc-ai/web-llm"
var engine = null var engine = null
var resume = "" var resume = ""
@@ -12,7 +12,7 @@ const loadProgress = (progress) => {
const loadResources = async () => { const loadResources = async () => {
let modelName = (await browser.storage.local.get("model")).model || "Llama-3.2-1B-Instruct-q4f32_1-MLC" let modelName = (await browser.storage.local.get("model")).model || "Llama-3.2-1B-Instruct-q4f32_1-MLC"
console.log(`Loading model: ${modelName}`) console.log(`Loading model: ${modelName}`)
engine = await CreateMLCEngine(modelName, { initProgressCallback: loadProgress }); engine = await CreateMLCEngine(modelName, { initProgressCallback: loadProgress })
console.log("Model loaded") console.log("Model loaded")
resume = (await browser.storage.local.get("resume")).resume || "No resume, halt and ask for resume." resume = (await browser.storage.local.get("resume")).resume || "No resume, halt and ask for resume."
resourcesLoaded = true resourcesLoaded = true
@@ -44,7 +44,7 @@ browser.contextMenus.create({
browser.contextMenus.onClicked.addListener((info, tab) => { browser.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "nms-cmenu" && info.selectionText) { if (info.menuItemId === "nms-cmenu" && info.selectionText) {
// Handle context menu click with selected text // Handle context menu click with selected text
console.log("Context menu clicked with selection:", info.selectionText); console.log("Context menu clicked with selection:", info.selectionText)
runMatch(info.selectionText) runMatch(info.selectionText)
} }
}) })

187
package-lock.json generated
View File

@@ -18,6 +18,9 @@
"style-loader": "^4.0.0", "style-loader": "^4.0.0",
"webpack": "^5.102.1", "webpack": "^5.102.1",
"webpack-cli": "^6.0.1" "webpack-cli": "^6.0.1"
},
"devDependencies": {
"webpack-bundle-analyzer": "^4.10.2"
} }
}, },
"node_modules/@discoveryjs/json-ext": { "node_modules/@discoveryjs/json-ext": {
@@ -379,6 +382,13 @@
"url": "https://opencollective.com/parcel" "url": "https://opencollective.com/parcel"
} }
}, },
"node_modules/@polka/url": {
"version": "1.0.0-next.29",
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"dev": true,
"license": "MIT"
},
"node_modules/@popperjs/core": { "node_modules/@popperjs/core": {
"version": "2.11.8", "version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
@@ -657,6 +667,19 @@
"acorn": "^8.14.0" "acorn": "^8.14.0"
} }
}, },
"node_modules/acorn-walk": {
"version": "8.3.4",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
"integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
"dev": true,
"license": "MIT",
"dependencies": {
"acorn": "^8.11.0"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/ajv": { "node_modules/ajv": {
"version": "8.17.1", "version": "8.17.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
@@ -913,6 +936,13 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
"integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
"dev": true,
"license": "MIT"
},
"node_modules/detect-libc": { "node_modules/detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
@@ -926,6 +956,13 @@
"node": ">=0.10" "node": ">=0.10"
} }
}, },
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true,
"license": "MIT"
},
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.249", "version": "1.5.249",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.249.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.249.tgz",
@@ -972,6 +1009,19 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-scope": { "node_modules/eslint-scope": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -1111,6 +1161,22 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"license": "ISC" "license": "ISC"
}, },
"node_modules/gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
"integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"duplexer": "^0.1.2"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/has-flag": { "node_modules/has-flag": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -1132,6 +1198,13 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true,
"license": "MIT"
},
"node_modules/icss-utils": { "node_modules/icss-utils": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
@@ -1367,6 +1440,16 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
"integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "3.3.11", "version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@@ -1410,6 +1493,16 @@
"integrity": "sha512-/AD7JGJbcp1pB5XwYkJyivqdeXofUP5u2lkif6vLGLc+SsV9OCC0JFNpVwM5pqHuFqbyojRt6xILuidJOwwJDQ==", "integrity": "sha512-/AD7JGJbcp1pB5XwYkJyivqdeXofUP5u2lkif6vLGLc+SsV9OCC0JFNpVwM5pqHuFqbyojRt6xILuidJOwwJDQ==",
"license": "(Apache-2.0 AND CC-BY-SA-4.0)" "license": "(Apache-2.0 AND CC-BY-SA-4.0)"
}, },
"node_modules/opener": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true,
"license": "(WTFPL OR MIT)",
"bin": {
"opener": "bin/opener-bin.js"
}
},
"node_modules/p-limit": { "node_modules/p-limit": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -1844,6 +1937,21 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/sirv": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
"integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@polka/url": "^1.0.0-next.24",
"mrmime": "^2.0.0",
"totalist": "^3.0.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/source-map": { "node_modules/source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -1993,6 +2101,16 @@
"node": ">=8.0" "node": ">=8.0"
} }
}, },
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "7.16.0", "version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
@@ -2096,6 +2214,53 @@
} }
} }
}, },
"node_modules/webpack-bundle-analyzer": {
"version": "4.10.2",
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
"integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@discoveryjs/json-ext": "0.5.7",
"acorn": "^8.0.4",
"acorn-walk": "^8.0.0",
"commander": "^7.2.0",
"debounce": "^1.2.1",
"escape-string-regexp": "^4.0.0",
"gzip-size": "^6.0.0",
"html-escaper": "^2.0.2",
"opener": "^1.5.2",
"picocolors": "^1.0.0",
"sirv": "^2.0.3",
"ws": "^7.3.1"
},
"bin": {
"webpack-bundle-analyzer": "lib/bin/analyzer.js"
},
"engines": {
"node": ">= 10.13.0"
}
},
"node_modules/webpack-bundle-analyzer/node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/webpack-bundle-analyzer/node_modules/commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 10"
}
},
"node_modules/webpack-cli": { "node_modules/webpack-cli": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz",
@@ -2190,6 +2355,28 @@
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
"license": "MIT" "license": "MIT"
},
"node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.3.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
} }
} }
} }

View File

@@ -21,5 +21,8 @@
"style-loader": "^4.0.0", "style-loader": "^4.0.0",
"webpack": "^5.102.1", "webpack": "^5.102.1",
"webpack-cli": "^6.0.1" "webpack-cli": "^6.0.1"
},
"devDependencies": {
"webpack-bundle-analyzer": "^4.10.2"
} }
} }

View File

@@ -1,4 +1,6 @@
const path = require("path") const path = require("path");
const { optimize } = require("webpack");
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = { module.exports = {
entry: { entry: {
@@ -13,8 +15,11 @@ module.exports = {
mode: "none", mode: "none",
watch: false, watch: false,
watchOptions: { watchOptions: {
ignored: '**/node_modules', ignored: '**/node_modules',
}, },
optimization: {
minimize: false
},
module: { module: {
rules: [ rules: [
{ {
@@ -29,5 +34,8 @@ module.exports = {
], ],
}, },
], ],
} },
plugins: [
new BundleAnalyzerPlugin()
]
} }