Pass package info to transpilers

This commit is contained in:
Michelle Tilley
2016-11-01 10:54:26 -07:00
parent de9ca2d4d5
commit 94f603e50a
4 changed files with 25 additions and 12 deletions

View File

@@ -19,9 +19,9 @@ var COMPILERS = {
'.coffee': packageTranspilationRegistry.wrapTranspiler(require('./coffee-script'))
}
exports.addTranspilerConfigForPath = function (packagePath, packageName, config) {
exports.addTranspilerConfigForPath = function (packagePath, packageName, packageMeta, config) {
packagePath = fs.realpathSync(packagePath)
packageTranspilationRegistry.addTranspilerConfigForPath(packagePath, packageName, config)
packageTranspilationRegistry.addTranspilerConfigForPath(packagePath, packageName, packageMeta, config)
}
exports.removeTranspilerConfigForPath = function (packagePath) {

View File

@@ -18,9 +18,10 @@ class PackageTranspilationRegistry {
this.transpilerPaths = {}
}
addTranspilerConfigForPath (packagePath, packageName, config) {
addTranspilerConfigForPath (packagePath, packageName, packageMeta, config) {
this.configByPackagePath[packagePath] = {
name: packageName,
meta: packageMeta,
path: packagePath,
specs: config
}
@@ -115,7 +116,8 @@ class PackageTranspilationRegistry {
.update(sourceCode, 'utf8')
if (transpiler && transpiler.getCacheKeyData) {
const additionalCacheData = transpiler.getCacheKeyData(sourceCode, filePath, spec.options)
const meta = this.getMetadata(spec)
const additionalCacheData = transpiler.getCacheKeyData(sourceCode, filePath, spec.options, meta)
hash.update(additionalCacheData, 'utf8')
}
@@ -126,7 +128,8 @@ class PackageTranspilationRegistry {
const transpiler = this.getTranspiler(spec)
if (transpiler) {
const result = transpiler.transpile(sourceCode, filePath, spec.options || {})
const meta = this.getMetadata(spec)
const result = transpiler.transpile(sourceCode, filePath, spec.options || {}, meta)
if (result === undefined || (result && result.code === undefined)) {
return sourceCode
} else if (result.code) {
@@ -140,6 +143,14 @@ class PackageTranspilationRegistry {
}
}
getMetadata (spec) {
return {
name: spec._config.name,
path: spec._config.path,
meta: spec._config.meta
}
}
getTranspilerPath (spec) {
Resolve = Resolve || require('resolve')
return Resolve.sync(spec.transpiler, {

View File

@@ -254,7 +254,7 @@ class Package
registerTranspilerConfig: ->
if @metadata.atomTranspilers
CompileCache.addTranspilerConfigForPath(@path, @name, @metadata.atomTranspilers)
CompileCache.addTranspilerConfigForPath(@path, @name, @metadata, @metadata.atomTranspilers)
unregisterTranspilerConfig: ->
if @metadata.atomTranspilers