我正在設置一個開發環境,我希望在我的主應用程序中使用它們的同時開發一個React組件庫。與另一個項目(Webpack/Babel問題)一起開發React組件庫
我在我的應用程序目錄中運行了npm link ../path/to/lib
,併成功將庫鏈接到應用程序node_modules
。但是,我似乎對Babel和/或Webpack需要如何設置以使代碼正確轉譯有些誤解。請注意,庫和主應用程序都是用ES6編寫的,主應用程序是彈出的Create-React-App應用程序。
目前,該圖書館有一個index.js
文件在它的根簡單地導出一個陣營組成:
export {default as Button} from './components/button/Button.jsx'
這裏是樣子:
import React, { PropTypes } from 'react'
import classnames from 'classnames'
export default class Button extends React.Component {
render() {
let classes = classnames({
'primary-button': true,
'primary-button-': this.props.type == '',
'primary-button': this.props.elevation == 2,
'primary-button': this.props.elevation >= 3,
});
return (
<a className={classes}>
{this.props.children}
</a>
)
}
}
我不知道如果甚至需要它,但在嘗試調試此問題時,我在庫的根目錄中添加了一個.babelrc
文件:
{
"presets": ["es2015", "react"],
"plugins": ["transform-class-properties"]
}
當我嘗試了Button
元件導入到組件中我的主要應用程序(使用import {Button} from 'lib'
),我收到以下錯誤:
Button.jsx Unexpected token (26:3)
You may need an appropriate loader to handle this file type.
|
| return (
| <a className={classes}>
| {this.props.children}
| </a>
問題:
- 如何這個錯誤得到解決?假設我的配置錯了,我需要改變什麼?圖書館本身是否需要安裝Webpack?我是否需要更改我的主應用程序的webpack配置?
- 雖然符號鏈接庫使用
npm link
正確地將其添加到主應用程序node_modules
目錄,但它不會將其附加到package.json
。我該如何正確添加它?此功能在2011年被要求,但尚未完全解決:https://github.com/npm/npm/issues/1166
謝謝!
似乎設置babel-loader來處理jsx時出現了問題。主應用程序webpack配置是否也是用create-react-app創建的? –
主要應用程序是彈出的create-react-app應用程序,我沒有修改webpack配置。該圖書館沒有安裝webpack。 – Orbit
請發佈您的webpack配置。你需要一個加載器來處理'.jsx'文件,就像處理'.js'文件一樣。 – Derek