1

Babelifyを実装するためにBrowserify-Railsを実装するRails 4.0プロジェクトを使用しています。このコードを解析するためにBabelifyのプリセット/プラグインは何ですか?

ローカルとリモートのベータ版サーバーですべてがうまくいっているようです。しかし、プロダクションにデプロイすると、特定のファイルがある場合はスキップされます(require(""))。

私の元の設定は、このでした:

var { configureStore } = require('./configureStore'); 

ここにリードが必要になります:

let { createStore, combineReducers, applyMiddleware, compose } = require('redux'); 
let thunk = require('redux-thunk').default 
let session = require('./reducers/session').default; 
let search = require('./reducers/search').default; 

const configureStore =() => { 
    const reducers = combineReducers({ 
    session, 
    search, 
    }); 

    const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; 

    return createStore(
    reducers, 
    composeEnhancers(applyMiddleware(thunk)) 
); 
} 

export { configureStore }; 

それはそれでこのラインを持っていたファイルをスキップ作っ

config.browserify_rails.commandline_options = ["-t [ babelify --presets [ es2015 react stage-0 ] --plugins [ syntax-async-functions transform-regenerator ] ]"] 

私はおそらく、私がここでES2015を上回っているいくつかのJSスタイルリングがあると推測していた

私は先に進んでconfigsを使い、Incrementalを追加してES2017にアップデートしました。それは私にその壊れたファイルを渡してしまった。私の新しい設定は、このように見えた:

config.browserify_rails.use_browserifyinc = true 
config.browserify_rails.commandline_options = ["-t [ babelify --presets [ es2017 react stage-0 ] --plugins [ syntax-async-functions transform-regenerator ] ]", "-t coffeeify --extension=\".js.coffee\""] 

をしかし、これは、このさらにファイル内の行限り、私を取得する:あなたは、次のファイルが解析され、翻訳された本をロード

let { search } = require('../../actions/search'); 

(と心)うまく:

export const SEARCH_RESULTS_RECEIVED = 'SEARCH_RESULTS_RECEIVED'; 

export const search = (term, token) => { 
    return (dispatch) => { 
    if (term && term.trim() !== '') { 
     return _search(term, token).then((results) => dispatch(resultsReceived(results))); 
    } else { 
     return dispatch(resultsReceived([])); 
    } 
    } 
}; 

const _search = (term, token) => { 
    let promise = new Promise((resolve, reject) => { 
    fetch(encodeURI(`/api/search?search=${term}`), { 
     headers: { 
     "Content-Type": "application/json", 
     "Authorization": `Token ${token}` 
     } 
    }) 
    .then(response => response.json()) 
    .then(function(response) { 
     return resolve(response.results); 
    }) 
    .catch((error) => { 
     return reject(error); 
    }); 
    }); 

    return promise; 
}; 

export const resultsReceived = (searchResults) => ({ 
    type: SEARCH_RESULTS_RECEIVED, 
    searchResults 
}); 

私はこの仕事をするために不足している可能性のあるBabelifyプラグイン/プリセットがあります場合、私は好奇心が強いです。

答えて

2

年間のプリセットには、その年に追加された機能のみが含まれています。つまり、es2017にはes2015es2016プリセットのものは含まれていません。

プリセットのこのセットはあなたの問題を解決するべきである:

es2015 es2016 es2017 react stage-0 

すべての最新の年間のプリセットを含めるための好ましい方法は、それらのすべてを引き込むenv presetを、使用することである、と述べ、一回更新しますES2018がリリースされ、必要に応じてターゲット環境に基づいて設定を行うこともできます。

env react stage-0 
+0

そんなにジョーをありがとう!私は正直なところ、この答えを見つけることができませんでした。ありがとうございました! – Trip

+0

@Trip:私が助けることができてうれしい、私は多くの人々がこれによって混乱すると思います!将来の参照のため、すべての公式プリセットは[こちら](http://babeljs.io/docs/plugins/)に記載されています。 –

関連する問題