Babel CLI copia archivos nonjs

90

Estoy ejecutando un comando babel cli

babel src --out-dir lib

Para copiar los scripts es6 de src a lib. Sin embargo, no copiará los archivos css / scss que tengo en la carpeta src /. ¿Hay alguna forma de hacer que los copie también?

yangli1990
fuente
La función de Babel es procesar jsarchivos. Úselo cppara copiar. Mejor aún, cree un archivo gulp.
Amadan
17
en desacuerdo 100%, babel debería incluir funcionalidad para mover archivos que no sean js, ya que esta es una funcionalidad necesaria para> 50% de los casos de uso
Alexander Mills

Respuestas:

176

Babel tiene la opción de copiar archivos para esto:

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

Nota: Es cierto que el propósito principal de babel es procesar archivos javascript, pero el gran conjunto de herramientas de babel en la actualidad a menudo hace que sea innecesario optar por configuraciones de scripts de compilación más complejas como gulpy por igual. Una configuración sin tragos podría agregar esto a 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
fuente
1
esto funcionó, casi, excepto que no copió un archivo jsx: /
Alexander Mills
¿Podría ser que no ha agregado el preajuste de reacción?
Emil Ingerslev
Bueno, si el preajuste de reacción no está instalado, debería mover el archivo, ¿verdad? :) No hizo ninguna de las dos cosas, presenté un problema con babel, de lo contrario, esto funcionó y voté a favor :)
Alexander Mills
Sí, yo supongo que sí. Descubrí que el registro de cambios ( github.com/babel/babel/blob/master/CHANGELOG.md ) indica que un error al respecto se corrigió en la versión 5.8.13-5.8.20: Se corrigió el error donde los archivos que babel puede compilar no estaban se escribe cuando se ignora con el indicador --copy-files.
Emil Ingerslev
7

Encontré una manera de hacer esto usando el módulo ncp

npm install ncp

Este módulo es básicamente como un cp excepto que funciona en

Este no es un módulo global, así que para ejecutarlo usamos

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