anchor.diff:    '--trust-type-annotations'
   ];
   
  +final _sourceDir = 'tool/npm_template';
  +final _destDir = 'build/npm/';
  +final _dir = new Directory(_destDir);
  +
   @Task('Build non-minified npm package with source map.')
   void npmDebug() {
     _dart2jsArgs
  
positive.code: 
    destination.writeAsStringSync('$preambleJs\n$compiledJs');
  
    delete(new File(p.join(destDir, 'gltf_validator.dart.js.deps')));
  
    final Map<String, dynamic> json = JSON
        .decode(new File(p.join(sourceDir, 'package.json')).readAsStringSync());
    json['version'] = _version;
  
    log("copying package.json to $destDir");
    new File(p.join(destDir, 'package.json'))
        .writeAsStringSync((const JsonEncoder.withIndent('    ')).convert(json));
  
    copy(new File(p.join(sourceDir, 'index.js')), dir);
    copy(new File(p.join(sourceDir, 'README.md')), dir);
    copy(new File('ISSUES.md'), dir);
    copy(new File('LICENSE'), dir);
    copy(new File('3RD_PARTY'), dir);
    copy(new File(p.join('docs', 'validation.schema.json')), dir);
  }
  
  @Depends(issues, npmRelease)
  @Task('Build an npm package.')
  void npm() {
    log("Building npm README...");
    run(npmExecutable, arguments: ['install'], workingDirectory: 'tool/npm_template');
    run(npmExecutable, arguments: ['run', 'docs'], workingDirectory: 'tool/npm_template');
  }
  
  @Depends(npm)
  
negative.code: 
  @Task('Build Dart snapshot.')
  void snapshot() {
    new Directory('build').createSync();
  
    _replaceVersion();
    Dart.run('bin/gltf_validator.dart',
  