react-native-web的webpack配置
时间: 2023-08-10 14:04:55 浏览: 133
webpack基本配置
下面是一个基本的 `webpack.config.js` 文件,用于将 React Native Web 应用程序打包为 Web 应用程序:
```javascript
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx']
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
devServer: {
contentBase: './dist',
hot: true
}
};
```
其中,`entry` 表示入口文件,`output` 表示输出文件路径和文件名。`module` 中的 `rules` 字段表示转换规则。在这个例子中,我们使用了 `babel-loader` 来将 ES6/JSX 语法转换为浏览器可识别的语法。我们还使用了 `style-loader` 和 `css-loader` 来处理 CSS 文件。`resolve` 字段用于指定可以省略的后缀名,以便在导入文件时更加方便。`plugins` 中我们使用了 `HotModuleReplacementPlugin` 来启用热重载。
最后,在 `devServer` 中,我们指定了 Webpack Dev Server 的配置。`contentBase` 表示服务器启动时的根目录,`hot` 表示启用热重载。
当然,还需要配置 `.babelrc` 文件来指定 Babel 转换规则。例如:
```json
{
"presets": [
"@babel/preset-env",
"@babel/preset-react",
"module:metro-react-native-babel-preset"
]
}
```
其中,`@babel/preset-env` 和 `@babel/preset-react` 分别用于转换 ES6 和 JSX 语法,`module:metro-react-native-babel-preset` 则是为了让 React Native Web 应用程序能够在 Webpack 中正确地解析依赖项。
阅读全文