mirror of
https://github.com/atom/atom.git
synced 2026-02-13 08:04:56 -05:00
Pass package info to transpilers
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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, {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user