babel CLI copie des fichiers nonjs

90

J'exécute une commande babel cli

babel src --out-dir lib

Pour copier les scripts es6 de src dans lib. Cependant, il ne copiera pas les fichiers css / scss que j'ai dans le dossier src /. Y a-t-il un moyen de les faire copier également?

yangli1990
la source
La fonction de Babel est de traiter les jsfichiers. Utilisez cppour la copie. Mieux encore, créez un gulpfile.
Amadan le
17
pas d'accord à 100%, babel devrait inclure une fonctionnalité pour déplacer des fichiers non-js car c'est une fonctionnalité nécessaire pour> 50% des cas d'utilisation
Alexander Mills

Réponses:

176

Babel a l' option de copie de fichiers pour cela:

babel src --out-dir lib --copy-files

Remarque: Il est vrai que l'objectif principal de babels est de traiter les fichiers javascript, mais la grande suite d'outils de babel de nos jours rend souvent inutile la configuration de scripts de construction plus complexes gulp. Une configuration sans gulp pourrait ajouter ceci à packages.json:

{
  ...
  "devDependencies": {
    "babel": "*",
    "babel-cli": "^6.4.0",
    "babel-preset-es2015": "^6.3.13"
  },
  "scripts": {
    "watch": "babel --watch src --out-dir lib --source-maps inline --copy-files",
    "build": "babel src --out-dir lib --source-maps inline --copy-files" 
  },
  "babel": {
    "presets": [
      "es2015"
    ]
  }
}
Emil Ingerslev
la source
1
cela a fonctionné, presque, sauf qu'il n'a pas copié un fichier jsx: /
Alexander Mills
Se pourrait-il que vous n'ayez pas ajouté le préréglage de réaction?
Emil Ingerslev
Eh bien, si le préréglage de réaction n'est pas installé, il devrait toujours déplacer le fichier à droite? :) il n'a ni l'un ni l'autre, j'ai déposé un problème avec babel, sinon cela a fonctionné et j'ai voté pour :)
Alexander Mills
Ouais, je suppose. Trouvé que le journal des modifications ( github.com/babel/babel/blob/master/CHANGELOG.md ) indique qu'un bogue à ce sujet est corrigé dans la version 5.8.13-5.8.20: Correction d'un bogue où les fichiers que Babel peut compiler n'étaient pas écrit lorsqu'il est ignoré avec l'indicateur --copy-files.
Emil Ingerslev
7

J'ai trouvé un moyen de le faire en utilisant le module ncp

npm install ncp

Ce module est fondamentalement comme un cp sauf qu'il fonctionne sur

Ce n'est pas un module global, donc pour l'exécuter, nous utilisons

node -e \"require('ncp').ncp('./src', './lib')\" && babel src --out-dir lib
yangli1990
la source