diff --git a/package-lock.json b/package-lock.json index e00ec7f6ea..ade93658c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8028,6 +8028,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/git-rev-sync/-/git-rev-sync-2.0.0.tgz", "integrity": "sha512-vnHFv2eocTmt/wHqZm3ksxtVshK4vptT0cEoumk6hAYRFx3do6Qo7xHBTBCv29+r3ZZCQOQ1i328MUCsYF7AUw==", + "dev": true, "requires": { "escape-string-regexp": "1.0.5", "graceful-fs": "4.1.15", @@ -8037,12 +8038,14 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "shelljs": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", + "dev": true, "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -8370,7 +8373,8 @@ "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true }, "invariant": { "version": "2.2.4", @@ -11096,7 +11100,8 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "path-to-regexp": { "version": "1.8.0", @@ -11583,6 +11588,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, "requires": { "resolve": "^1.1.6" } @@ -11861,6 +11867,7 @@ "version": "1.15.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, "requires": { "path-parse": "^1.0.6" } diff --git a/package.json b/package.json index ac59d447e1..47b976e494 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,6 @@ "firefox-profile": "2.0.0", "fs-extra": "9.0.1", "fx-runner": "1.0.13", - "git-rev-sync": "2.0.0", "import-fresh": "3.2.1", "mkdirp": "1.0.4", "multimatch": "4.0.0", @@ -116,6 +115,7 @@ "eslint-plugin-flowtype": "5.2.0", "eslint-plugin-import": "2.22.0", "flow-bin": "0.129.0", + "git-rev-sync": "2.0.0", "html-entities": "1.3.1", "mocha": "8.0.1", "nyc": "15.1.0", diff --git a/src/program.js b/src/program.js index a8042eec0c..12091eb9a9 100644 --- a/src/program.js +++ b/src/program.js @@ -5,7 +5,6 @@ import {readFileSync} from 'fs'; import camelCase from 'camelcase'; import decamelize from 'decamelize'; -import git from 'git-rev-sync'; import yargs from 'yargs'; import { Parser as yargsParser } from 'yargs/yargs'; @@ -353,6 +352,11 @@ export function defaultVersionGetter( return JSON.parse(packageData).version; } else { log.debug('Getting version from the git revision'); + // This branch is only reached during development. + // git-rev-sync is in devDependencies, and lazily imported using require. + // This also avoids logspam from https://github.com/mozilla/web-ext/issues/1916 + // eslint-disable-next-line import/no-extraneous-dependencies + const git = require('git-rev-sync'); return `${git.branch(absolutePackageDir)}-${git.long(absolutePackageDir)}`; } } diff --git a/webpack.config.js b/webpack.config.js index 001559ab49..f17c26c2dd 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -39,7 +39,12 @@ module.exports = { externals: [ nodeExternals({ modulesFromFile: { - excludeFromBundle: ['dependencies'], + // We shouldn't bundle devDependencies. E.g. git-rev-sync would be + // bundled if we omitted "devDependencies" from this list, which is + // undesired because the branch is never reached on production, so it + // is intentionally part of devDependencies to avoid the unnecessary + // dependency and bundling on production. + excludeFromBundle: ['dependencies', 'devDependencies'], }, }), ],