Norbert: Babel mit Node.js verwenden

Beitrag lesen

Hallo,

vorab, ich bin ein absoluter Neuling in Sachen Node.js; ich habe es mir buchstäblich vor zwei Tagen runtergeladen. Leider weiß ich nicht, wo ich da mit „lernen“ anfangen soll – ich wäre also über ein paar Tipps in dieser Richtung sehr dankbar. Wie habt ihr da angefangen, welche Internet-Literatur könnt ihr zu diesem Thema empfehlen?

Nun zu meinem Anliegen: irgendwo muss man ja mit Node anfangen, also habe ich mir gedacht, dass ich mir ein Script schreibe, mit dem ich meine JavaScript-Dateien ganz einfach mit Babel übersetzen lassen kann.
Mit meinem Editor (Notepad++) kann ich „externe Programme“ ausführen. Ich habe mir also ein Batch-Script geschrieben, in dem ich mein compile-Script mit Node aufrufe. Dieses Batch-Script habe ich mir auf F5 gelegt. Drücke ich F5, wird mein compile-Script aufgerufen – klappt also soweit.
Scripte, die im selben Ordner wie das compile-Script liegen, kann ich problemlos compilieren, wenn ich aber ein Script compilieren will, das woanders liegt, bekomme ich so ein Error: Error: Couldn't find preset "es2015" relative to directory "../path/to/my/directory"
Entweder ich habe irgendeine Option übersehen, oder das ist unheimlich dämlich. Ich habe Babel am Start (require('babel-core')) und es kann nichts mit den Presets anfangen, sobald ich ein Script in einem anderen Ordner compilieren will – top. Hat jemand eine Idee?

Meine Batch-Script:

@echo off
node babelCompile.js -d=../path/to/my/directory/ input.es6.js output.js
pause>NUL
exit

Mein compile-Script:

let babel = require('babel-core');
let fs = require('fs');
let args = require('minimist')(process.argv.slice(2), {
    alias : {
        d : 'fileDir'
    },
    default : {
        d : './'
    }
});

if (args._.length < 2)
  return console.log('babelCompile : input file and output file are required.'), undefined;


let options = {
    presets : ['es2015'],
    babelrc : false,
    ast : false,
    compact : false,
    minified : false,
    comments : false,
    retainLines : false
};

babel.transformFile(args.fileDir + args._[0], options, function(err, res) {
    if (err)
      throw err;
    
    let compiledCode = res.code.replace(/\r\n|\n|\r/g, '\r\n');
    fs.writeFile(args.fileDir + args._[1], '\uFEFF' + compiledCode, function(err) {
        if (err)
          throw err;
        
        console.log(`Successfully compiled ${args._[0]} to ${args._[1]}`);
    });
});

Norbert

akzeptierte Antworten