Add glossary, some renames

Reviewed By: jeanlauliac

Differential Revision: D5043919

fbshipit-source-id: ba6f47102747c0762a153cd860f8f61f090cf5d7
This commit is contained in:
David Aurelio 2017-05-11 16:37:04 -07:00 committed by Facebook Github Bot
parent f5abafd17b
commit 497d3ff228
3 changed files with 42 additions and 20 deletions

View File

@ -0,0 +1,22 @@
Glossary
===
Terminology commonly used in React Native Packager / Metro Bundler is explained
here. This document is work in progress, please help completing it.
## Build Root
Configuration files (`rn-cli.config.js`) support configuring one or more roots
that are watched for file changes during development. In the context of the
integration with the `js_*` rule family in [Buck][], there is only a single root,
the build root used by Buck.
## Local Path
A *local path* / `localPath` is the path to a file relative to a
[*build root*](#build-root).
[Buck]: http://buckbuild.com/

View File

@ -456,7 +456,7 @@ class Bundler {
log(createActionEndEntry(transformingFilesLogEntry)); log(createActionEndEntry(transformingFilesLogEntry));
onResolutionResponse(response); onResolutionResponse(response);
// get entry file complete path (`entryFile` is relative to roots) // get entry file complete path (`entryFile` is a local path, i.e. relative to roots)
let entryFilePath; let entryFilePath;
if (response.dependencies.length > 1) { // skip HMR requests if (response.dependencies.length > 1) { // skip HMR requests
const numModuleSystemDependencies = const numModuleSystemDependencies =
@ -603,12 +603,12 @@ class Bundler {
const placeHolder = {}; const placeHolder = {};
dependencies.forEach(dep => { dependencies.forEach(dep => {
if (dep.isAsset()) { if (dep.isAsset()) {
const relPath = getPathRelativeToRoot( const localPath = toLocalPath(
this._projectRoots, this._projectRoots,
dep.path dep.path
); );
promises.push( promises.push(
this._assetServer.getAssetData(relPath, platform) this._assetServer.getAssetData(localPath, platform)
); );
ret.push(placeHolder); ret.push(placeHolder);
} else { } else {
@ -688,8 +688,8 @@ class Bundler {
assetPlugins: Array<string>, assetPlugins: Array<string>,
platform: ?string = null, platform: ?string = null,
) { ) {
const relPath = getPathRelativeToRoot(this._projectRoots, module.path); const localPath = toLocalPath(this._projectRoots, module.path);
var assetUrlPath = joinPath('/assets', pathDirname(relPath)); var assetUrlPath = joinPath('/assets', pathDirname(localPath));
// On Windows, change backslashes to slashes to get proper URL path from file path. // On Windows, change backslashes to slashes to get proper URL path from file path.
if (pathSeparator === '\\') { if (pathSeparator === '\\') {
@ -698,7 +698,7 @@ class Bundler {
const isImage = isAssetTypeAnImage(extname(module.path).slice(1)); const isImage = isAssetTypeAnImage(extname(module.path).slice(1));
return this._assetServer.getAssetData(relPath, platform).then(assetData => { return this._assetServer.getAssetData(localPath, platform).then(assetData => {
return Promise.all([isImage ? sizeOf(assetData.files[0]) : null, assetData]); return Promise.all([isImage ? sizeOf(assetData.files[0]) : null, assetData]);
}).then(res => { }).then(res => {
const dimensions = res[0]; const dimensions = res[0];
@ -842,11 +842,11 @@ class Bundler {
} }
function getPathRelativeToRoot(roots, absPath) { function toLocalPath(roots, absPath) {
for (let i = 0; i < roots.length; i++) { for (let i = 0; i < roots.length; i++) {
const relPath = relativePath(roots[i], absPath); const localPath = relativePath(roots[i], absPath);
if (relPath[0] !== '.') { if (localPath[0] !== '.') {
return relPath; return localPath;
} }
} }

View File

@ -348,9 +348,9 @@ class OptionsHasher {
* This function is extra-conservative with how it hashes the transform * This function is extra-conservative with how it hashes the transform
* options. In particular: * options. In particular:
* *
* * we need to hash paths relative to the root, not the absolute paths, * * we need to hash paths as local paths, i.e. relative to the root, not
* otherwise everyone would have a different cache, defeating the * the absolute paths, otherwise everyone would have a different cache,
* purpose of global cache; * defeating the purpose of global cache;
* * we need to reject any additional field we do not know of, because * * we need to reject any additional field we do not know of, because
* they could contain absolute path, and we absolutely want to process * they could contain absolute path, and we absolutely want to process
* these. * these.
@ -397,21 +397,21 @@ class OptionsHasher {
+dev | +generateSourceMaps << 1 | +hot << 2 | +!!inlineRequires << 3, +dev | +generateSourceMaps << 1 | +hot << 2 | +!!inlineRequires << 3,
])); ]));
hash.update(JSON.stringify(platform)); hash.update(JSON.stringify(platform));
let relativeBlacklist = []; let blacklistWithLocalPaths = [];
if (typeof inlineRequires === 'object') { if (typeof inlineRequires === 'object') {
relativeBlacklist = this.relativizeFilePaths(Object.keys(inlineRequires.blacklist)); blacklistWithLocalPaths = this.pathsToLocal(Object.keys(inlineRequires.blacklist));
} }
const relativeProjectRoot = this.relativizeFilePath(projectRoot); const localProjectRoot = this.toLocalPath(projectRoot);
const optionTuple = [relativeBlacklist, relativeProjectRoot]; const optionTuple = [blacklistWithLocalPaths, localProjectRoot];
hash.update(JSON.stringify(optionTuple)); hash.update(JSON.stringify(optionTuple));
return hash; return hash;
} }
relativizeFilePaths(filePaths: Array<string>): Array<string> { pathsToLocal(filePaths: Array<string>): Array<string> {
return filePaths.map(this.relativizeFilePath.bind(this)); return filePaths.map(this.toLocalPath, this);
} }
relativizeFilePath(filePath: string): string { toLocalPath(filePath: string): string {
return path.relative(this._rootPath, filePath); return path.relative(this._rootPath, filePath);
} }
} }