Skip to content

Commit 2f7be14

Browse files
authored
Don’t pass package.json and options over IPC (#1304)
* Don’t pass package.json over IPC * Add backward compatibility getter for asset.package
1 parent 98a293f commit 2f7be14

30 files changed

Lines changed: 133 additions & 103 deletions

src/Asset.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ const objectHash = require('./utils/objectHash');
55
const md5 = require('./utils/md5');
66
const isURL = require('./utils/is-url');
77
const config = require('./utils/config');
8+
const syncPromise = require('./utils/syncPromise');
9+
const logger = require('./Logger');
810

911
let ASSET_ID = 1;
1012

@@ -15,12 +17,11 @@ let ASSET_ID = 1;
1517
* for subclasses to implement.
1618
*/
1719
class Asset {
18-
constructor(name, pkg, options) {
20+
constructor(name, options) {
1921
this.id = ASSET_ID++;
2022
this.name = name;
2123
this.basename = path.basename(this.name);
2224
this.relativeName = path.relative(options.rootDir, this.name);
23-
this.package = pkg || {};
2425
this.options = options;
2526
this.encoding = 'utf8';
2627
this.type = path.extname(this.name).slice(1);
@@ -98,13 +99,35 @@ class Asset {
9899
);
99100

100101
parsed.pathname = this.options.parser
101-
.getAsset(resolved, this.package, this.options)
102+
.getAsset(resolved, this.options)
102103
.generateBundleName();
103104

104105
return URL.format(parsed);
105106
}
106107

108+
get package() {
109+
logger.warn(
110+
'`asset.package` is deprecated. Please use `await asset.getPackage()` instead.'
111+
);
112+
return syncPromise(this.getPackage());
113+
}
114+
115+
async getPackage() {
116+
if (!this._package) {
117+
this._package = await this.getConfig(['package.json']);
118+
}
119+
120+
return this._package;
121+
}
122+
107123
async getConfig(filenames, opts = {}) {
124+
if (opts.packageKey) {
125+
let pkg = await this.getPackage();
126+
if (pkg && pkg[opts.packageKey]) {
127+
return pkg[opts.packageKey];
128+
}
129+
}
130+
108131
// Resolve the config file
109132
let conf = await config.resolve(opts.path || this.name, filenames);
110133
if (conf) {

src/Bundler.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,12 +357,16 @@ class Bundler extends EventEmitter {
357357
}
358358

359359
async resolveAsset(name, parent) {
360-
let {path, pkg} = await this.resolver.resolve(name, parent);
360+
let {path} = await this.resolver.resolve(name, parent);
361+
return this.getLoadedAsset(path);
362+
}
363+
364+
getLoadedAsset(path) {
361365
if (this.loadedAssets.has(path)) {
362366
return this.loadedAssets.get(path);
363367
}
364368

365-
let asset = this.parser.getAsset(path, pkg, this.options);
369+
let asset = this.parser.getAsset(path, this.options);
366370
this.loadedAssets.set(path, asset);
367371

368372
this.watch(path, asset);
@@ -490,7 +494,7 @@ class Bundler extends EventEmitter {
490494
let startTime = Date.now();
491495
let processed = this.cache && (await this.cache.read(asset.name));
492496
if (!processed || asset.shouldInvalidate(processed.cacheData)) {
493-
processed = await this.farm.run(asset.name, asset.package, this.options);
497+
processed = await this.farm.run(asset.name);
494498
if (this.cache) {
495499
this.cache.write(asset.name, processed);
496500
}

src/Parser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ class Parser {
7575
return parser;
7676
}
7777

78-
getAsset(filename, pkg, options = {}) {
78+
getAsset(filename, options = {}) {
7979
let Asset = this.findParser(filename);
8080
options.parser = this;
81-
return new Asset(filename, pkg, options);
81+
return new Asset(filename, options);
8282
}
8383
}
8484

src/Pipeline.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@ class Pipeline {
1111
this.parser = new Parser(options);
1212
}
1313

14-
async process(path, pkg, options) {
15-
let asset = this.parser.getAsset(path, pkg, options);
14+
async process(path, isWarmUp) {
15+
let options = this.options;
16+
if (isWarmUp) {
17+
options = Object.assign({isWarmUp}, options);
18+
}
19+
20+
let asset = this.parser.getAsset(path, options);
1621
let generated = await this.processAsset(asset);
1722
let generatedMap = {};
1823
for (let rendition of generated) {
@@ -51,7 +56,7 @@ class Pipeline {
5156
);
5257
if (!(asset instanceof AssetType)) {
5358
let opts = Object.assign({rendition}, asset.options);
54-
let subAsset = new AssetType(asset.name, asset.package, opts);
59+
let subAsset = new AssetType(asset.name, opts);
5560
subAsset.contents = value;
5661
subAsset.dependencies = asset.dependencies;
5762

src/assets/CSSAsset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ const IMPORT_RE = /@import/;
99
const PROTOCOL_RE = /^[a-z]+:/;
1010

1111
class CSSAsset extends Asset {
12-
constructor(name, pkg, options) {
13-
super(name, pkg, options);
12+
constructor(name, options) {
13+
super(name, options);
1414
this.type = 'css';
1515
}
1616

src/assets/CoffeeScriptAsset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ const Asset = require('../Asset');
22
const localRequire = require('../utils/localRequire');
33

44
class CoffeeScriptAsset extends Asset {
5-
constructor(name, pkg, options) {
6-
super(name, pkg, options);
5+
constructor(name, options) {
6+
super(name, options);
77
this.type = 'js';
88
}
99

src/assets/GLSLAsset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ const promisify = require('../utils/promisify');
55
const Resolver = require('../Resolver');
66

77
class GLSLAsset extends Asset {
8-
constructor(name, pkg, options) {
9-
super(name, pkg, options);
8+
constructor(name, options) {
9+
super(name, options);
1010
this.type = 'js';
1111
}
1212

src/assets/GlobAsset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ const micromatch = require('micromatch');
44
const path = require('path');
55

66
class GlobAsset extends Asset {
7-
constructor(name, pkg, options) {
8-
super(name, pkg, options);
7+
constructor(name, options) {
8+
super(name, options);
99
this.type = null; // allows this asset to be included in any type bundle
1010
}
1111

src/assets/GraphqlAsset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ const Asset = require('../Asset');
22
const localRequire = require('../utils/localRequire');
33

44
class GraphqlAsset extends Asset {
5-
constructor(name, pkg, options) {
6-
super(name, pkg, options);
5+
constructor(name, options) {
6+
super(name, options);
77
this.type = 'js';
88
}
99

src/assets/HTMLAsset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ const OPTIONS = {
7373
};
7474

7575
class HTMLAsset extends Asset {
76-
constructor(name, pkg, options) {
77-
super(name, pkg, options);
76+
constructor(name, options) {
77+
super(name, options);
7878
this.type = 'html';
7979
this.isAstDirty = false;
8080
}

0 commit comments

Comments
 (0)