Mit Babel + grunt Arbeit mit ES6 - how zu transformieren erfordern Aussagen?

Beginnen möchte ich mit ES6, und ich will grunt zum verwalten meiner Dateien. Das ist meine Projekt-Struktur so weit:

Gruntfile.js
package.json
dist/
src/
  index.es6

Und das ist, was index.es6 aussieht:

import MapGL from 'react-map-gl';
const data = [];
const viewport = new Viewport();

Diese Pakete sind alle definiert, in package.json und installiert.

Wie schalte ich das ES6-Datei in ES5 JavaScript? Recht bin ich in der Lage, um es in JavaScript eine Art, aber es ist nicht die Umwandlung der require Aussagen überhaupt.

Dies ist meine aktuelle Gruntfile:

module.exports = function(grunt) {
  require('load-grunt-tasks')(grunt);
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    concat: {
      options: {
        separator: ';'
      },
      dist: {
        src: ['src/**/*.js'],
        dest: 'dist/<%= pkg.name %>.js'
      }
    },
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
      },
      dist: {
        files: {
          'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
        }
      }
    },
    jshint: {
      files: ['src/index.js', 'test/index.js'],
      options: {
        reporterOutput: '',
        esnext: true,
        globals: {
          console: true,
          module: true,
          document: true
        }
      }
    },
    babel: {
        files: {
            expand: true,
            src: ['src/*.es6'],
            ext: '-compiled.js'
        },
        options: {
            sourceMap: true,
            presets: ['babel-preset-es2015']
        }
    },
    watch: {
      files: ['<%= jshint.files %>'],
      tasks: ['babel', 'jshint', 'concat']
    }
  });
  grunt.registerTask('default', ['babel', 'jshint', 'concat', 'uglify']);
};

Läuft grunt erzeugt die folgenden Dateien:

Gruntfile.js
package.json
dist/
  myproject.js
src/
  index.es6
  index-compiled.js
  index-compiled.map

Aber myproject.js enthält die Zeile var _reactMapGl = require('react-map-gl'); was nicht im browser.

Sie benötigen ein transpiler wie babel in Ihrem Grunzen pipeline. Konvertieren (transpile) Ihren code, egal von welcher Versionen von js in ES5 das ist der aktuelle standard für Browser.
github.com/babel/grunt-babel
Sie werden wahrscheinlich auch wollen, etwas zu verwenden, wie Browserify in Ihre pipeline zu handhaben, wodurch alle Ihre Einfuhren und solche.
danke. Ich bin schon über babel, die Zeile grunt.registerTask('default', ['babel', 'jshint', 'concat', 'uglify']) im gruntfile. Brauche ich browserify?
Oh sorry, habe ich verpasst. Ja, werden Sie wahrscheinlich benötigen, Browserify, als auch - in seiner einfachsten Form wird es ausgegeben wird, eine einzelne Datei aus aller Module

InformationsquelleAutor Richard | 2016-12-09

Schreibe einen Kommentar