我似乎无法使用webpack
将LESS
加载到我的页面中
这是我的webpack.config.js
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
entry: [
'./app/index.js'
],
output: {
path: './public/js',
filename: 'main.js'
},
devtool: 'source-map',
module: {
loaders: [
{ test: /\.json$/, loader: 'json-loader' },
{ test: /\.jsx$/, loader: 'jsx-loader' },
{ test: /\.es6$/, exclude: /node_modules/, loader: 'babel-loader?stage=0&optional=runtime'},
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?stage=0&optional=runtime'},
{ test: /\.less$/, exclude: /node_modules/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!less-loader") }
],
plugins: [
new ExtractTextPlugin('style.css', {
allChunks: true
})
]
}
};
我的app/index.js
包含:
'use strict';
let stylesheet = require('./styles/index.less');
let routes = require('./routes.js');
let Router = require('react-router');
let { Handler } = Router;
Router.run(routes, Router.HistoryLocation, function(root, state) {
React.render(<Handler query={ state } path={ state.pathname }/>, document.getElementById('app'))
});
var stylesheet
应该使用buttons.less
,因为它包含@import "buttons.less";
这是我尝试加载的reactjs
组件:
var React = require('react');
var { RouteHandler } = require('react-router');
var UserMenu = React.createClass({
render() {
return (
<div>
<div id="login-btn">
<a href="/login">
<button type="button" className="btn btn-embossed btn-primary">Login</button>
</a>
</div>
<div id="signup-btn">
<a href="/signup">
<button type="button" className="btn btn-embossed btn-primary">Sign up</button>
</a>
</div>
</div>
);
}
})
var Layout = React.createClass({
render() {
console.log("layout props");
console.log(this.props);
return (
<div id="review-web">
<header className="header">
<UserMenu />
</header>
<div>
<RouteHandler path={ this.props.path } />
</div>
</div>
)
}
});
module.exports = Layout;
项目结构
答案 0 :(得分:10)
除了将ExtractTextPlugin
的输出加载到HTML中之外,您似乎做得很好。
当您使用css
时,它会将less
,bundle.css
捆绑在一个单独的webpack
文件中,您必须手动将其加载到您的应用中。 后,您从控制台运行了webpackConfig.output.path
CLI,您可以在ExtractTextPlugin
文件夹中的文件夹中找到此捆绑包。
通常我只在生产模式下使用style-loader
。在开发模式中,我只使用hot-module-replacement
,因此我可以利用webpack
,因此每次更改样式时我都不需要运行{test: /\.css/, loader: 'style-loader!css-loader'},
CLI(I知道我可以使用webpack-middleware,但我不想这样做。
One of my prod webpack configs
修改强> 这是index.less文件的拼写错误。我在拉取请求时为你解决了这个问题:)
编辑2 好的,这是我的最后一次尝试:
尝试将此添加到您的wepback配置文件中:
//= require underscore
//= requrie gmaps/google
也许,只是可能,LESS加载器输出一个临时CSS文件,也需要进行测试。我不知道,我会尝试。
然后,这就是我要做的事情,以便减少到最低限度来测试: