2015-01-13 1 views
1

나는 다트 서버 애플리케이션에 트랜스포머를 어떻게 사용할 수 있는지 알아 내려고하고 있습니다. 지금까지 나는 https://www.dartlang.org/tools/pub/assets-and-transformers.htmlhttps://www.dartlang.org/tools/pub/transformers/에있는 기사를 읽고 그 정보를 사용하여 다음과 같은 변환기를 작성했습니다. 내가 pub run를 사용하는 경우펍 실행에서 트랜스포머 출력 파일 사용

import 'dart:async'; 
import 'package:barback/barback.dart'; 

class TestTransformer extends Transformer { 
final BarbackSettings _settings; 

TestTransformer.asPlugin(this._settings); 
AssetId assetId; 

Future<bool> isPrimary(AssetId id) { 
    assetId = id; 
    return new Future.value(id.toString().endsWith('.txt')); 
} 

apply(Transform transform) { 
    transform.primaryInput.readAsString().then((text) { 
     String output = text.toUpperCase; 
     print(output); 
     transform.addOutput(new Asset.fromString(assetId.addExtension('.upper'), output)); 
    }); 
    } 
} 

나는 변압기 실행을 참조하고, print 라인 출력은 예상대로. 제가 누락 된 것은 * .txt.upper 출력 파일입니다. 내 시스템 어디에서나 그런 파일을 찾을 수 없습니다. 이 출력은 어디에서 끝나고 코드에서 어떻게 사용할 수 있습니까? 사용하는 의미는 File.open()으로 파일을 읽을 수 있고, 출력이 다트 파일이면 다른 다트 파일로 가져올 수 있습니다.

답변

1

내가 아는 한 콘솔/서버 애플리케이션 용 변압기는 지원되지 않습니다. pub upgrade을 실행하면 Precompiling dependencies 이후에 일부 변압기가로드되지만 원본 파일을 처리하지 않는 것으로 보입니다.

+0

이제'print' 라인에서 'pub run'이 내 변압기를 실행하고 파일을 처리하는 것을 확실히 알 수 있기 때문에 더욱 혼란 스럽습니다. 또한'pub run'을 사용하기 위해서는 https://github.com/dart-lang/async_await 변환기를 사용해야합니다. 이 문맥에서 비동기/대기 변압기는 어떻게 작동합니까? –

+0

좋은 질문입니다. 나는 모른다. 몇 주 전에 Dart 팀의 일부 구성원과 토론을 가졌습니다.이 단원에서는 변압기가 서버 측 코드에서 지원되지 않는다고 간단히 언급했습니다. 내가 뭔가 잘못 해석 한 것일 수도 있습니다. –

+0

https://github.com/dart-lang/async_await는 "이 변환기는 dart2js로 비동기식/대기식으로 시도 할 때 유용합니다 .Dart VM은 기본적으로 비동기식 및 대기식을 지원합니다 .VM에서만 실행되는 다트 코드를 작성하는 경우, 당신은이 변압기가 필요하지 않습니다. " 따라서 클라이언트 측 코드에만 해당됩니다. –

관련 문제