2017-03-23 98 views
0

我无法使babelify在我的代码上运行。babelify转换不运行

我有两个打字稿文件:

script1.ts

import Greeter from './script2'; 

const greeter = new Greeter('Hello, world!'); 

document.body.innerHTML = greeter.greet(); 

script2.ts

class Greeter { 
    greeting: string; 

    constructor(msg: string) { 
     this.greeting = msg; 
    } 

    greet() { 
     return `<h1>${this.greeting}</h1>`; 
    } 
} 

export default Greeter; 

.babelrc

{ 
    "presets": [ 
     "airbnb" 
    ] 
} 

我试图用tsify和bab运行browserify elify:

browserify ./script1.ts -o ./app.js -p tsify -t babelify 

的文件遭到编译和打包,但它从来没有运行过babelify的代码,我最终仍然有它的类和模板串输出。

如果我单独运行通天塔,它按预期工作:

browserify ./script1.ts -o ./app.js -p tsify 
babel ./app.js --out-file ./app-babel.js 

我错过了哪一步吗?

+0

http://stackoverflow.com/questions/40182786/how-to-set-up-grunt-browserify-tsify-babelify检查答案here..maybe这是你的问题? –

+0

@suraj给了一个去,它不工作,不幸的是。 –

回答

0

问题是,默认情况下,babel将只能运行在.JS.JSX文件。不幸的是,目前没有办法从.babelrc配置文件(https://github.com/babel/babel/issues/3741)来配置它。

因此,这必须从命令行配置:

browserify ./script1.ts -o ./app.js -p tsify -t [ babelify --extensions ".ts",".tsx",".js",".jsx" ]

或代码:

browserify({ entries: files }) 
    .plugin(tsify) 
    .transform(babelify, { 
    extensions: [ 
     '.ts', '.tsx', '.js', '.jsx' 
    ] 
    }); 

注意,巴贝尔依然会自动加载指定此扩展名列表时,任何.babelrc内容。