如何运行`source_gen`?
How to run `source_gen`?
我目前正在尝试在我的 Flutter 项目中使用 built_value
,但我对我需要做什么感到困惑...
我在 pubspec.yaml
中添加了以下几行(从示例项目中复制):
dev_dependencies:
build: ^0.7.0
build_runner: ^0.3.0
built_value_generator: ^1.0.0
但是,到目前为止,什么都没有发生...在 this video demonstration 中,您可以看到生成的代码是 updated/regenerated 即时生成的,而开发人员正在更改他的代码。
我是否需要执行任何其他操作才能使代码生成工作?启动某种监视更改并触发代码生成的服务器?在某个时候将 source_gen
注册为 运行?
编辑: 好的,现在 lib
文件夹旁边有一个 tool
文件夹。 tool
文件夹包含 build.dart
和 watch.dart
,两者都已更改以匹配我的 pubspec.yaml
中的包 name:
。 lib
文件夹包含我从 this tutorial.
复制的文件 user.dart
library user;
import 'package:built_value/built_value.dart';
part 'user.g.dart';
abstract class User implements Built<User, UserBuilder> {
String get name;
@nullable
String get nickname;
User._();
factory User([updates(UserBuilder b)]) = _$User;
}
我现在不应该看到 user.g.dart
文件出现在 lib
中,其中包含生成的代码吗? glob 模式没有错,是吗?
编辑 2: 这是 flutter --version
:
的输出
dmta@elite:~/flutter$ flutter --version
Flutter • channel master • https://github.com/flutter/flutter.git
Framework • revision e65d47d4ba (11 hours ago) • 2017-05-15 12:40:20 -0700
Engine • revision 7dd359e165
Tools • Dart 1.23.0-dev.11.11
您需要一个文件 tool/build.dart
来生成模型 类
// Copyright (c) 2016, Google Inc. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
import 'dart:async';
import 'package:build_runner/build_runner.dart';
import 'package:built_value_generator/built_value_generator.dart';
import 'package:source_gen/source_gen.dart';
/// Build the generated files in the built_value chat example.
Future main(List<String> args) async {
await build(
new PhaseGroup.singleAction(
new GeneratorBuilder([
new BuiltValueGenerator(),
]),
new InputSet('chat_example', const ['lib/**/*.dart'])),
deleteFilesByDefault: true);
}
或 watch.dart
文件,如 https://github.com/google/built_value.dart/tree/master/chat_example/tool 中所示,它监视源文件中的更改并重新生成 built_value
模型 类 每当其中一个源文件已修改。
我目前正在尝试在我的 Flutter 项目中使用 built_value
,但我对我需要做什么感到困惑...
我在 pubspec.yaml
中添加了以下几行(从示例项目中复制):
dev_dependencies:
build: ^0.7.0
build_runner: ^0.3.0
built_value_generator: ^1.0.0
但是,到目前为止,什么都没有发生...在 this video demonstration 中,您可以看到生成的代码是 updated/regenerated 即时生成的,而开发人员正在更改他的代码。
我是否需要执行任何其他操作才能使代码生成工作?启动某种监视更改并触发代码生成的服务器?在某个时候将 source_gen
注册为 运行?
编辑: 好的,现在 lib
文件夹旁边有一个 tool
文件夹。 tool
文件夹包含 build.dart
和 watch.dart
,两者都已更改以匹配我的 pubspec.yaml
中的包 name:
。 lib
文件夹包含我从 this tutorial.
user.dart
library user;
import 'package:built_value/built_value.dart';
part 'user.g.dart';
abstract class User implements Built<User, UserBuilder> {
String get name;
@nullable
String get nickname;
User._();
factory User([updates(UserBuilder b)]) = _$User;
}
我现在不应该看到 user.g.dart
文件出现在 lib
中,其中包含生成的代码吗? glob 模式没有错,是吗?
编辑 2: 这是 flutter --version
:
dmta@elite:~/flutter$ flutter --version
Flutter • channel master • https://github.com/flutter/flutter.git
Framework • revision e65d47d4ba (11 hours ago) • 2017-05-15 12:40:20 -0700
Engine • revision 7dd359e165
Tools • Dart 1.23.0-dev.11.11
您需要一个文件 tool/build.dart
来生成模型 类
// Copyright (c) 2016, Google Inc. Please see the AUTHORS file for details. // All rights reserved. Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. import 'dart:async'; import 'package:build_runner/build_runner.dart'; import 'package:built_value_generator/built_value_generator.dart'; import 'package:source_gen/source_gen.dart'; /// Build the generated files in the built_value chat example. Future main(List<String> args) async { await build( new PhaseGroup.singleAction( new GeneratorBuilder([ new BuiltValueGenerator(), ]), new InputSet('chat_example', const ['lib/**/*.dart'])), deleteFilesByDefault: true); }
或 watch.dart
文件,如 https://github.com/google/built_value.dart/tree/master/chat_example/tool 中所示,它监视源文件中的更改并重新生成 built_value
模型 类 每当其中一个源文件已修改。