mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-22 17:33:23 +01:00
Merge pull request #4111 from MetaMask/build-fix-sourcemaps
Build - fix sourcemaps
This commit is contained in:
commit
9b1c07c750
49
development/sourcemap-validator.js
Normal file
49
development/sourcemap-validator.js
Normal file
@ -0,0 +1,49 @@
|
||||
const fs = require('fs')
|
||||
const { SourceMapConsumer } = require('source-map')
|
||||
|
||||
//
|
||||
// Utility to help check if sourcemaps are working
|
||||
//
|
||||
// searches `dist/chrome/inpage.js` for "new Error" statements
|
||||
// and prints their source lines using the sourcemaps.
|
||||
// if not working it may error or print minified garbage
|
||||
//
|
||||
|
||||
start()
|
||||
|
||||
async function start() {
|
||||
const rawBuild = fs.readFileSync(__dirname + '/../dist/chrome/inpage.js', 'utf8')
|
||||
const rawSourceMap = fs.readFileSync(__dirname + '/../dist/sourcemaps/inpage.js.map', 'utf8')
|
||||
const consumer = await new SourceMapConsumer(rawSourceMap)
|
||||
|
||||
console.log('hasContentsOfAllSources:', consumer.hasContentsOfAllSources(), '\n')
|
||||
console.log('sources:')
|
||||
consumer.sources.map((sourcePath) => console.log(sourcePath))
|
||||
|
||||
console.log('\nexamining "new Error" statements:\n')
|
||||
const sourceLines = rawBuild.split('\n')
|
||||
sourceLines.map(line => indicesOf('new Error', line))
|
||||
.forEach((errorIndices, lineIndex) => {
|
||||
// if (errorIndex === null) return console.log('line does not contain "new Error"')
|
||||
errorIndices.forEach((errorIndex) => {
|
||||
const position = { line: lineIndex + 1, column: errorIndex }
|
||||
const result = consumer.originalPositionFor(position)
|
||||
if (!result.source) return console.warn(`!! missing source for position: ${position}`)
|
||||
// filter out deps distributed minified without sourcemaps
|
||||
if (result.source === 'node_modules/browserify/node_modules/browser-pack/_prelude.js') return // minified mess
|
||||
if (result.source === 'node_modules/web3/dist/web3.min.js') return // minified mess
|
||||
const sourceContent = consumer.sourceContentFor(result.source)
|
||||
const sourceLines = sourceContent.split('\n')
|
||||
const line = sourceLines[result.line-1]
|
||||
console.log(`\n========================== ${result.source} ====================================\n`)
|
||||
console.log(line)
|
||||
console.log(`\n==============================================================================\n`)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function indicesOf(substring, string) {
|
||||
var a=[],i=-1;
|
||||
while((i=string.indexOf(substring,i+1)) >= 0) a.push(i);
|
||||
return a;
|
||||
}
|
20
gulpfile.js
20
gulpfile.js
@ -484,16 +484,6 @@ function generateBundler(opts, performBundle) {
|
||||
NODE_ENV: opts.devMode ? 'development' : 'production',
|
||||
}))
|
||||
|
||||
// Minification
|
||||
if (opts.minifyBuild) {
|
||||
bundler.transform('uglifyify', {
|
||||
global: true,
|
||||
mangle: {
|
||||
reserved: [ 'MetamaskInpageProvider' ]
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if (opts.watch) {
|
||||
bundler = watchify(bundler)
|
||||
// on any file update, re-runs the bundler
|
||||
@ -567,6 +557,16 @@ function bundleTask(opts) {
|
||||
.pipe(sourcemaps.init({ loadMaps: true }))
|
||||
}
|
||||
|
||||
// Minification
|
||||
if (opts.minifyBuild) {
|
||||
buildStream = buildStream
|
||||
.pipe(uglify({
|
||||
mangle: {
|
||||
reserved: [ 'MetamaskInpageProvider' ]
|
||||
},
|
||||
}))
|
||||
}
|
||||
|
||||
// Finalize Source Maps (writes .map file)
|
||||
if (opts.buildSourceMaps) {
|
||||
buildStream = buildStream
|
||||
|
94
package-lock.json
generated
94
package-lock.json
generated
@ -3622,6 +3622,14 @@
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
|
||||
"integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8="
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.4.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
|
||||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -4852,6 +4860,15 @@
|
||||
"string_decoder": "0.10.31"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.4.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
|
||||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
@ -10482,7 +10499,7 @@
|
||||
"debug-fabulous": "1.0.0",
|
||||
"detect-newline": "2.1.0",
|
||||
"graceful-fs": "4.1.11",
|
||||
"source-map": "0.4.4",
|
||||
"source-map": "0.7.2",
|
||||
"strip-bom-string": "1.0.0",
|
||||
"through2": "2.0.3"
|
||||
},
|
||||
@ -11993,6 +12010,16 @@
|
||||
"integrity": "sha1-Skxd2OT7Xps82mDIIt+tyu5m4K8=",
|
||||
"requires": {
|
||||
"source-map": "0.4.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.4.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
|
||||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"inquirer": {
|
||||
@ -21916,6 +21943,16 @@
|
||||
"requires": {
|
||||
"js-base64": "2.4.3",
|
||||
"source-map": "0.4.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.4.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
|
||||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"secp256k1": {
|
||||
@ -22778,12 +22815,10 @@
|
||||
"integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A=="
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.4.4",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
|
||||
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
}
|
||||
"version": "0.7.2",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.2.tgz",
|
||||
"integrity": "sha512-NDJB/R2BS7YJG0tP9SbE4DKwKj1idLT5RJqfVYZ7dreFX7wulZT3xxVhbYKrQo9n0JkRptl51TrX/5VK3HodMA==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map-resolve": {
|
||||
"version": "0.5.1",
|
||||
@ -22980,7 +23015,7 @@
|
||||
"requires": {
|
||||
"esprima": "1.0.4",
|
||||
"estraverse": "1.3.2",
|
||||
"source-map": "0.4.4"
|
||||
"source-map": "0.7.2"
|
||||
}
|
||||
},
|
||||
"esprima": {
|
||||
@ -25040,55 +25075,12 @@
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz",
|
||||
"integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g=="
|
||||
},
|
||||
"uglify-es": {
|
||||
"version": "3.3.9",
|
||||
"resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
|
||||
"integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "2.13.0",
|
||||
"source-map": "0.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.13.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
|
||||
"integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"uglify-to-browserify": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
|
||||
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
|
||||
"optional": true
|
||||
},
|
||||
"uglifyify": {
|
||||
"version": "github:MetaMask/uglifyify#8662585e39125a96a5379d71cb4a606829790f87",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"convert-source-map": "1.1.3",
|
||||
"extend": "1.3.0",
|
||||
"minimatch": "3.0.4",
|
||||
"through": "2.3.8",
|
||||
"uglify-es": "3.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"extend": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-1.3.0.tgz",
|
||||
"integrity": "sha1-0VFvsP9WJNLr+RI+odrFoZlABPg=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"ultron": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
|
||||
|
@ -270,10 +270,10 @@
|
||||
"selenium-webdriver": "^3.5.0",
|
||||
"shell-parallel": "^1.0.3",
|
||||
"sinon": "^5.0.0",
|
||||
"source-map": "^0.7.2",
|
||||
"stylelint-config-standard": "^18.2.0",
|
||||
"tape": "^4.5.1",
|
||||
"testem": "^2.0.0",
|
||||
"uglifyify": "github:MetaMask/uglifyify#keep-flags",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"vinyl-source-stream": "^2.0.0",
|
||||
"watchify": "^3.9.0"
|
||||
|
Loading…
Reference in New Issue
Block a user