做出此决定之前的一些考虑因素。正如您所说,您正在学习 react,因此您可能不知道在 React 环境中使用的最佳工具,但您应该在使用 gulp 之前尝试更多。
看看这个sn-p,我给你详细解释一下。
devServer: {
inline: true,
port: 8080,
host: '0.0.0.0',
historyApiFallback: true,
},
entry: './src/app/App.js',
output: {
path: path.join(__dirname, 'static'),
publicPath: '/',
filename: 'bundle.[hash].js',
chunkFilename: 'chunk.[hash].js',
},
module: {
rules: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
options: {
presets: [ ['es2015',{ modules: false }], 'react'],// insert ]
plugins: ['transform-object-rest-spread'],
},
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader',
}),
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]',
}),
},
{
test: /.(mp4|png|jpg|woff(2)??|eot|otf|ttf|svg)(\?[a-z0-9=\.]+)?$/,
use: 'url-loader?limit=100000',
},
],
},
plugins: [CleanPlugin, HTMLWebpackPluginConfig, ExtractTextPluginCSS, FaviconPlugin],
devtool: 'cheap-source-map',
};
devServer :它是配置webpack-dev-server 的对象,这是一个在开发模式下使用的神奇工具,并通过热重载查看输出。
规则:这是 webpack 配置文件中最重要的部分,规则会根据创建的规则测试文件的扩展名并对其进行特殊处理。
在.JSX 测试中,他们将测试您的所有 .jsx 文件,即根文件夹中的调用。预设用于为 .jsx 和插件创建特殊规则,我只使用了一个启用 spread-opertor 的插件
.css 文件的规则我必须使用 2 个加载器,一个用于 css,另一个用于第一个失败(回退)。
现在你的意思是,scss 文件,我将 scss 与 css 模块一起使用,它们为每个 css 输出创建具有一些奇怪名称的块文件。使用此加载器,您可以简单地使用然后导入。CSS-MODULES 用于我为每个组件创建的每个 .scss 文件,看起来很复杂?检查网址。例如组件A.JS、组件B.JS、组件A.scss、组件B.scss
最后一条规则,是针对静态文件图片和字体的,这里不多解释。
插件行,这是必须的,您必须在配置文件中插入您使用的所有插件。最后但并非最不重要的 devtool 行带有源映射,您可以在 chrome(或其他)devTools 中检查您的缩小代码,我喜欢将此工具与调试器一起使用。
我希望它对你有所帮助,但即使你已经尝试过这个并且想要使用 gulp 和 react:https://jonsuh.com/blog/integrating-react-with-gulp/