<p dir="auto">I'm trying to achieve both "allowJs" and "Compile On Save" at the same time.  "allowJs" exists in tsconfig.json, but not the IDE's TypeScript Build options.  "Compile On Save" exists in the IDE (which makes sense, since it is really an editor concern), but is disabled if tsconfig.json is present.  What I think would be ideal is to allow "Compile On Save" to be lit up and active in the IDE regardless of whether tsconfig is present or not, even if the other options (which are passed through to to the compiler) are not available.</p>
<p dir="auto">ES6 module loader assumes that there should be only one entry for every imported module in the module dependency list and as a consequence there should be only one setter for every module.This does not play well with the current TypeScript emit where we generate a separate entry for every import\export statement.</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="export {x} from 'b';
export {y} from 'b';"><pre class="notranslate"><span class="pl-k">export</span> <span class="pl-kos">{</span><span class="pl-s1">x</span><span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'b'</span><span class="pl-kos">;</span>
<span class="pl-k">export</span> <span class="pl-kos">{</span><span class="pl-s1">y</span><span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'b'</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">will become</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="System.register(['b', 'b'], function(exports_1) {
    return {
        setters:[
            function (_b_1) {
                exports_1(&quot;x&quot;, _b_1[&quot;x&quot;]);
            },
            function (_b_2) {
                exports_1(&quot;y&quot;, _b_2[&quot;y&quot;]);
            }],
        execute: function() {
        }
    }
});"><pre class="notranslate"><span class="pl-v">System</span><span class="pl-kos">.</span><span class="pl-en">register</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'b'</span><span class="pl-kos">,</span> <span class="pl-s">'b'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-s1">exports_1</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
    <span class="pl-k">return</span> <span class="pl-kos">{</span>
        <span class="pl-c1">setters</span>:<span class="pl-kos">[</span>
            <span class="pl-k">function</span> <span class="pl-kos">(</span><span class="pl-s1">_b_1</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
                <span class="pl-s1">exports_1</span><span class="pl-kos">(</span><span class="pl-s">"x"</span><span class="pl-kos">,</span> <span class="pl-s1">_b_1</span><span class="pl-kos">[</span><span class="pl-s">"x"</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
            <span class="pl-kos">}</span><span class="pl-kos">,</span>
            <span class="pl-k">function</span> <span class="pl-kos">(</span><span class="pl-s1">_b_2</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
                <span class="pl-s1">exports_1</span><span class="pl-kos">(</span><span class="pl-s">"y"</span><span class="pl-kos">,</span> <span class="pl-s1">_b_2</span><span class="pl-kos">[</span><span class="pl-s">"y"</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
            <span class="pl-kos">}</span><span class="pl-kos">]</span><span class="pl-kos">,</span>
        <span class="pl-en">execute</span>: <span class="pl-k">function</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
        <span class="pl-kos">}</span>
    <span class="pl-kos">}</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<p dir="auto">ES6 module loader does not raise any errors in presence of duplicate entries and will call both setters when module is instantiated however it will call only the first one if something in module 'b' will invoke exporter function. Relevant part of ES6 module loader source code is <a href="https://github.com/ModuleLoader/es6-module-loader/blob/master/src/loader.js#L728">here</a></p>