我有2個項目:Project1和Project2。如何在出口時使用Glyphicons react-bootstap
Project1使用react-bootstrap。 Project1使用react-bootstrap的所有組件,並在react-bootstrap組件上創建一個包裝器(不要問爲什麼,這是必需的)。 Project2應該使用Project1(導出時)作爲react-bootstrap的包裝庫。
PROJECT1 - >
index.js:
import { Bootstrap } from 'bootstrap/dist/css/bootstrap.css';
...
import Glyphicon from './src/components/Glyphicon';
...
export default {
...
Glyphicon,
...
};
SRC /組件/ Glyphicon.jsx:
import React, { PropTypes } from 'react';
import { RBGlyphicon } from 'react-bootstrap';
const Glyphicon = props => (
<RBGlyphicon
id={props.id}
bsClass={props.clClass}
glyph={props.glyph}
/>
);
Glyphicon.defaultProps = {
id: undefined,
clClass: 'glyphicon',
glyph: undefined,
};
Glyphicon.propTypes = {
id: PropTypes.string,
clClass: PropTypes.string,
glyph: PropTypes.string.isRequired,
};
export default Glyphicon;
webpack.config.js :
const webpack = require('webpack');
const path = require('path');
module.exports = (env = {}) => {
const isProduction = env.production === true;
return {
entry: './index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'Project1.js',
libraryTarget: 'umd',
library: 'Project1',
},
module: {
rules: [
{
test: /.(js|jsx)?$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.css$/,
loader: 'style-loader!css-loader',
},
{
test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/,
loader: 'url-loader?limit=10000&mimetype=application/font-woff',
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: 'url-loader?limit=10000&mimetype=application/octet-stream',
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: 'file-loader',
},
{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: 'url-loader?limit=10000&mimetype=image/svg+xml',
},
],
},
resolve: {
extensions: ['.js', '.jsx'],
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
}),
new webpack.optimize.UglifyJsPlugin(),
],
};
};
我導出此PROJECT1爲使用的WebPack稱爲PROJECT1捆綁,並在Project2中在SRC文件夾複製。我不抄在這個版本
現在的問題與Glyphicons開始產生的字體文件。
Project2的 - >
SRC/App.jsx:
import React, { Component } from 'react';
import Project1 from './Project1';
...
export default class App extends Component {
render() {
return (
<div>
...
<Project1.Glyphicon glyph="camera" />Camera
...
</div>
);
}
}
export default App;
index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './src/App';
ReactDOM.render(<App />, document.getElementById('root'));
的index.html:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<div id="root">
</div>
<script src='/bundle.js'></script>
</body>
</html>
我用的WebPack-DEV-服務器打造Project2的,並在瀏覽器中運行。當我在Project2中使用Glyphicon.jsx時,圖標不會顯示在瀏覽器中。這裏是一個在Chrome瀏覽器控制檯顯示錯誤:
Chrome Browser Debug Console errors
現在我知道這個問題是關係到字體。
即使我複製這些生成的字體文件,並在根粘貼Project2的,我仍然得到同樣的錯誤。
我應該怎麼做這些字體文件從PROJECT1出口,使他們能夠在Project2中使用嗎?
是的,這是我大量的試驗後想通,終於放棄了對使用的字形圖標,因爲我需要引導4。 –