diff --git a/packages/core/parcel/src/packagers/JSConcatPackager.js b/packages/core/parcel/src/packagers/JSConcatPackager.js index 89fe42d0889..b7ce037f1f5 100644 --- a/packages/core/parcel/src/packagers/JSConcatPackager.js +++ b/packages/core/parcel/src/packagers/JSConcatPackager.js @@ -1,27 +1,22 @@ const Packager = require('./Packager'); const path = require('path'); -const fs = require('fs'); const concat = require('../scope-hoisting/concat'); const urlJoin = require('../utils/urlJoin'); +const getExisting = require('../utils/getExisting'); const walk = require('babylon-walk'); const babylon = require('babylon'); const t = require('babel-types'); const {getName, getIdentifier} = require('../scope-hoisting/utils'); -const prelude = { - source: fs - .readFileSync(path.join(__dirname, '../builtins/prelude2.js'), 'utf8') - .trim(), - minified: fs - .readFileSync(path.join(__dirname, '../builtins/prelude2.min.js'), 'utf8') - .trim() - .replace(/;$/, '') -}; - -const helpers = - fs - .readFileSync(path.join(__dirname, '../builtins/helpers.js'), 'utf8') - .trim() + '\n'; +const prelude = getExisting( + path.join(__dirname, '../builtins/prelude2.min.js'), + path.join(__dirname, '../builtins/prelude2.js') +); + +const helpers = getExisting( + path.join(__dirname, '../builtins/helpers.min.js'), + path.join(__dirname, '../builtins/helpers.js') +); class JSConcatPackager extends Packager { async start() { @@ -77,7 +72,7 @@ class JSConcatPackager extends Packager { } } - this.write(helpers); + this.write(helpers.minified); } write(string) { diff --git a/packages/core/parcel/src/packagers/JSPackager.js b/packages/core/parcel/src/packagers/JSPackager.js index ed72b808f8a..ed2f8c17a74 100644 --- a/packages/core/parcel/src/packagers/JSPackager.js +++ b/packages/core/parcel/src/packagers/JSPackager.js @@ -1,19 +1,14 @@ -const fs = require('fs'); const path = require('path'); const Packager = require('./Packager'); +const getExisting = require('../utils/getExisting'); const urlJoin = require('../utils/urlJoin'); const lineCounter = require('../utils/lineCounter'); const objectHash = require('../utils/objectHash'); -const prelude = { - source: fs - .readFileSync(path.join(__dirname, '../builtins/prelude.js'), 'utf8') - .trim(), - minified: fs - .readFileSync(path.join(__dirname, '../builtins/prelude.min.js'), 'utf8') - .trim() - .replace(/;$/, '') -}; +const prelude = getExisting( + path.join(__dirname, '../builtins/prelude.min.js'), + path.join(__dirname, '../builtins/prelude.js') +); class JSPackager extends Packager { async start() { diff --git a/packages/core/parcel/src/utils/getExisting.js b/packages/core/parcel/src/utils/getExisting.js new file mode 100644 index 00000000000..6cebd3b5b71 --- /dev/null +++ b/packages/core/parcel/src/utils/getExisting.js @@ -0,0 +1,17 @@ +const fs = require('fs'); +/** + * Creates an object that contains both source and minified (using the source as a fallback). + * e.g. builtins.min.js and builtins.js. + */ +module.exports = (minifiedPath, sourcePath) => { + let source = fs.readFileSync(sourcePath, 'utf8').trim(); + return { + source, + minified: fs.existsSync(minifiedPath) + ? fs + .readFileSync(minifiedPath, 'utf8') + .trim() + .replace(/;$/, '') + : source + }; +};