瀏覽代碼

webpack: load source maps also for dependencies

Joeri Exelmans 1 年之前
父節點
當前提交
d25826adc4
共有 5 個文件被更改,包括 42 次插入7 次删除
  1. 4 4
      package.json
  2. 19 2
      pnpm-lock.yaml
  3. 1 1
      webpack.config.cjs
  4. 13 0
      webpack.dev.cjs
  5. 5 0
      webpack.prod.cjs

+ 4 - 4
package.json

@@ -36,6 +36,7 @@
 		"lodash": "^4.17.21",
 		"mocha": "^10.2.0",
 		"nyc": "^15.1.0",
+		"source-map-loader": "^4.0.1",
 		"ts-loader": "^9.4.2",
 		"ts-node": "^9.1.1",
 		"typescript": "^4.9.5",
@@ -49,9 +50,8 @@
 		"test-all": "mocha --require ts-node/register './src/**/*.test.ts'",
 		"test-with-coverage": "nyc --reporter=text mocha --require ts-node/register",
 		"test-all-with-coverage": "nyc --reporter=text mocha --require ts-node/register './src/**/*.test.ts'",
-		"webpack": "webpack --mode=production --progress",
-		"webpack-help": "webpack --help",
-		"dev-server": "webpack serve --mode=development --devtool=eval-source-map",
-		"webpack-profile": "webpack --profile --json > webpack-stats.json"
+		"webpack": "webpack --config=webpack.prod.cjs --progress",
+		"webpack-devserver": "webpack serve --config=webpack.dev.cjs",
+		"webpack-profile": "webpack --config=webpack.prod.cjs --profile --json > webpack-stats.json"
 	}
 }

+ 19 - 2
pnpm-lock.yaml

@@ -103,6 +103,9 @@ devDependencies:
   nyc:
     specifier: ^15.1.0
     version: 15.1.0
+  source-map-loader:
+    specifier: ^4.0.1
+    version: 4.0.1(webpack@5.89.0)
   ts-loader:
     specifier: ^9.4.2
     version: 9.5.0(typescript@4.9.5)(webpack@5.89.0)
@@ -1158,6 +1161,10 @@ packages:
   /@xtuc/long@4.2.2:
     resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
 
+  /abab@2.0.6:
+    resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+    dev: true
+
   /accepts@1.3.8:
     resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
     engines: {node: '>= 0.6'}
@@ -2712,7 +2719,6 @@ packages:
     engines: {node: '>=0.10.0'}
     dependencies:
       safer-buffer: 2.1.2
-    dev: false
 
   /icss-utils@5.1.0(postcss@8.4.31):
     resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
@@ -3956,7 +3962,18 @@ packages:
   /source-map-js@1.0.2:
     resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
     engines: {node: '>=0.10.0'}
-    dev: false
+
+  /source-map-loader@4.0.1(webpack@5.89.0):
+    resolution: {integrity: sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==}
+    engines: {node: '>= 14.15.0'}
+    peerDependencies:
+      webpack: ^5.72.1
+    dependencies:
+      abab: 2.0.6
+      iconv-lite: 0.6.3
+      source-map-js: 1.0.2
+      webpack: 5.89.0(webpack-cli@5.1.4)
+    dev: true
 
   /source-map-support@0.5.21:
     resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}

+ 1 - 1
webpack.config.cjs

@@ -11,7 +11,6 @@ catch (e) {
   revision = "unknown";
 }
 
-// export default { 
 module.exports = {
   entry: path.resolve(__dirname, 'src', 'frontend', 'index.tsx'),
   module: {
@@ -37,6 +36,7 @@ module.exports = {
       // allow using absolute paths when referring to 'onion' library.
       onion: path.resolve(__dirname, 'src', 'onion'),
 
+      // Dirty fake polyfill - should remove this at some point.
       util: path.resolve(__dirname, 'src', 'util', 'mock_node_util.ts'),
 
       // The following are needed to make NodeJS' 'crypto' module work in the browser:

+ 13 - 0
webpack.dev.cjs

@@ -0,0 +1,13 @@
+const config = require("./webpack.common.cjs");
+
+config.mode = 'development';
+config.devtool = 'eval-source-map';
+
+// also load source maps for all dependencies:
+config.module.rules.push({
+  test: /\.jsx?$/,
+  enforce: 'pre',
+  use: 'source-map-loader',
+});
+
+module.exports = config;

+ 5 - 0
webpack.prod.cjs

@@ -0,0 +1,5 @@
+const config = require("./webpack.common.cjs");
+
+config.mode = 'production';
+
+module.exports = config;