title: TypeScript allowJs and outFile doesn't emit the JS module
body: <p>The following excerpt from the TypeScript 1.8 Release Notes indicates that in the below example, the contents of bar.js should be emitted as a "bar" module in the final bundled output, given my use of allowJs in tsconfig.</p>
  
  <p>The excerpt from <a href="https://www.typescriptlang.org/docs/release-notes/typescript-1.8.html" rel="nofollow">TypeScript 1.8 Release Notes</a>: </p>
  
  <blockquote>
    <p>.js files are now allowed as input to tsc. The TypeScript compiler checks the input .js files for syntax errors, and emits valid output based on the --target and --module flags. The output can be combined with other .ts files as well. Source maps are still generated for .js files just like with .ts files.</p>
  </blockquote>
  
  <p><em>tsconfig.json</em> -- note the <code>allowJs</code> and the <code>outFile</code> options</p>
  
  <pre><code>{
  "compilerOptions": {
      "module": "amd",
      "target": "es5",
      "allowJs": true,
      "outFile": "built.js"
  },
  "files": [
      "main.ts"
  ]
  </code></pre>
  
  <p>}</p>
  
  <p><em>main.ts</em></p>
  
  <pre><code>import * as foo from './foo';
  import * as bar from './bar';
  
  foo.run();
  bar.run();
  </code></pre>
  
  <p><em>foo.ts</em></p>
  
  <pre><code>export function run() {
      console.log("Foo runnning!");
  }
  </code></pre>
  
  <p><em>bar.js</em></p>
  
  <pre><code>export function run() {
      console.log("Bar running!");
  }
  </code></pre>
  
  <p><em>bar.d.ts</em></p>
  
  <pre><code>export function run(): void;
  </code></pre>
  
  <p>tsc 1.8.10 emits this output in <em>built.js</em> though.  My question is <strong>why isn't the module in bar.js included in the emitted output?</strong></p>
  
  <pre><code>define("foo", ["require", "exports"], function (require, exports) {
      "use strict";
      function run() {
          console.log("Foo runnning!");
      }
      exports.run = run;
  });
  define("main", ["require", "exports", "foo", './bar'], function (require, exports, foo, bar) {
      "use strict";
      foo.run();
      bar.run();
  });
  </code></pre>