babel CLI copiar arquivos nonjs

90

Estou executando um comando babel cli

babel src --out-dir lib

Para copiar os scripts es6 de src para lib. No entanto, ele não copiará os arquivos css / scss que tenho na pasta src /. Existe uma maneira de fazer com que ele também os copie?

yangli1990
fonte
A função do Babel é processar jsarquivos. Use cppara copiar. Melhor ainda, faça um gulpfile.
Amadan
17
discordo 100%, o babel deve incluir funcionalidade para mover arquivos não-js, pois esta é uma funcionalidade necessária para> 50% dos casos de uso
Alexander Mills

Respostas:

177

O Babel tem a opção de copiar arquivos para isso:

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

Observação: é verdade que o objetivo principal do babels é processar arquivos javascript, mas o grande conjunto de ferramentas do babel atualmente torna desnecessário ir para configurações de script de construção mais complexas, como gulp e semelhantes. Uma configuração sem gole poderia adicionar isso 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
fonte
1
isso funcionou, quase, exceto que não copiou um arquivo jsx: /
Alexander Mills
Será que você não adicionou a predefinição de reação?
Emil Ingerslev
bem, se a predefinição de reação não estiver instalada, ele ainda deve mover o arquivo certo? :) não funcionou nem, eu registrei um problema com a babel, caso contrário, funcionou e eu votei positivamente :)
Alexander Mills
Sim, eu acho que sim. Descobriu que o registro de alterações ( github.com/babel/babel/blob/master/CHANGELOG.md ) afirma que um bug sobre isso foi corrigido na versão 5.8.13-5.8.20: Corrigir bug onde os arquivos que o babel pode compilar não eram sendo escrito quando ignorado com o sinalizador --copy-files.
Emil Ingerslev
7

Eu encontrei uma maneira de fazer isso usando o módulo ncp

npm install ncp

Este módulo é basicamente como um cp, exceto que funciona em

Este não é um módulo global, então para executá-lo usamos

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