systemjs / plugin-babel

SystemJS Babel Plugin
MIT License
83 stars 33 forks source link

The plugin doesn't seem to be doing anything #84

Open tomasvarg opened 6 years ago

tomasvarg commented 6 years ago

I'm not able to run anything needing transpilation even with the most basic configuration - attempt to run something ends with syntax error on node_modules/systemjs/dist/system.src.js:2823:8; when I try to log source param of the getSource function on this line I'm getting untranspiled code.

index.html (only the relevant part):

    <script src="node_modules/promise-polyfill/promise.js"></script>
    <script src="node_modules/systemjs/dist/system.src.js"></script>
    <script src="system.config.js"></script>
    <script>
      SystemJS.import('index.js');
    </script>

system.config.js:

SystemJS.config({
    map: {
        'plugin-babel': 'node_modules/systemjs-plugin-babel/plugin-babel.js',
        'systemjs-babel-build': 'node_modules/systemjs-plugin-babel/systemjs-babel-browser.js'
    },
    transpiler: 'plugin-babel'
});

(Adding baseURL, defaultJSExtension won't help)

index.js

setTimeout(() => {
    console.log('Hello from es6!');
}, 0);

Exact stack trace:

SyntaxError: Wrong syntax
   at evaluate (http://10.0.0.13:8081/node_modules/systemjs/dist/system.src.js:2823:8)
   at Anonymous function (http://10.0.0.13:8081/node_modules/systemjs/dist/system.src.js:3626:11)
   at dynamicExecute (http://10.0.0.13:8081/node_modules/systemjs/dist/system.src.js:1145:5)
   at doEvaluate (http://10.0.0.13:8081/node_modules/systemjs/dist/system.src.js:1092:7)
   at ensureEvaluate (http://10.0.0.13:8081/node_modules/systemjs/dist/system.src.js:1000:3)
   at Anonymous function (http://10.0.0.13:8081/node_modules/systemjs/dist/system.src.js:613:7)
   at Anonymous function (http://10.0.0.13:8081/node_modules/promise-polyfill/promise.js:44:9)

versions (apart from promise-polyfill no other packages present):

    "systemjs": "^0.20.18",
    "systemjs-plugin-babel": "0.0.25"

(Don't have any other old browser than IE11, sorry. Also tried to include various core-js polyfills.)

Am I missing something obvious?

guybedford commented 6 years ago

By default SystemJS won't transpile all code, only code it deems to be ES module code.

Try adding:

System.config({
  meta: {
    'path-to-index-dir/*': { format: 'esm' }
  }
});

Or just specifically for the index.js even.

tomasvarg commented 6 years ago

This works, thanks!

Do I get it right that's what the following note in systemjs/doc/module-format.md states?

Note that ES6 modules are detected via the presence of import and export module syntax and no other features at all. This is because the transpilation applies to the module format specifically, not the language.

(I thought about adding a feature detection clarification in the plugin's readme.)

guybedford commented 6 years ago

Yes exactly, if you'd like to clarify PR's welcome.