webpack 简单配置
const ExtractTextPlugin = require('extract-text-webpack-plugin') //打包的css拆分,将一部分抽离出来
const webpack = require('webpack'); //引入的webpack,使用lodash
const HtmlWebpackPlugin = require('html-webpack-plugin') //将html打包
const path = require('path'); //引入node的path模块
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = function() {
return {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, '../dist'), //定位,输出文件的目标路径
filename: '[name].js',
// publicPath: publicPath,
// sourceMapFilename: '[name].map'
},
optimization: {
splitChunks: {
chunks: 'all'
}
},
resolve: {
// 解决,react-router-dom 等依赖react的包报错缺少 react的问题
alias: {
'react': 'nervjs',
'react-dom': 'nervjs',
// 除非你想使用 createClass,否则这一条配置是没有必要的
'create-react-class': "nerv-create-class"
},
modules: [ // 模块的查找目录
path.resolve(__dirname, '../node_modules')
],
extensions: [".js", ".json", ".jsx", ".css"], // 用到的文件的扩展
},
module: {
rules: [
{
test: /\.js$/,
// include: [
// path.resolve(__dirname, 'src')
// ],
use: 'babel-loader'
},
// css 引入外来或者公共样式,与模块式css混淆会导致 外来样式不认识
// 此时 公共样式统一放在 assets文件夹下
{
test: /\.css$/,
include: [
path.resolve(__dirname, '../src/assets')
],
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader'
]
})
},
// css 模块儿化配置
{
test: /\.css$/,
exclude: [
path.resolve(__dirname, '../src/assets'),
],
// use: 'css-loader'
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{ loader: 'css-loader',
options: {
modules: true,
sourceMap: true,
importLoaders: 1,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
})
},
{
test: /\.(jpg|png|gif)$/,
use: [
{
loader: 'file-loader' //根据文件地址加载文件
}
]
}, {
test: /\.(woff|woff2|eot|ttf|svg)$/,
use: [
{
loader: 'url-loader?limit=100000' //
}
]
}
],
},
plugins: [
// 提取css
new ExtractTextPlugin('style.css'),
// 直接复制过去的样式文件
new CopyWebpackPlugin([ //src下其他的文件直接复制到dist目录下
{ from:'src/assets',to: '../dist/assets' }
]),
// 此处的入口地址一定要写正确哦
new HtmlWebpackPlugin({
filename: 'index.html',
template: './index.html'
})
],
};
}
package.json
{ "name": "idhp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "webpack-dev-server --env.NODE_ENV=dev --config webpack.config.js --mode development", "build": "webpack --env.NODE_ENV=prod --mode production" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@babel/core": "^7.0.0-beta.53", "@babel/plugin-transform-react-jsx": "^7.0.0-beta.53", "@babel/preset-env": "^7.0.0-beta.53", "babel-loader": "^8.0.0-beta.0", "copy-webpack-plugin": "^4.5.2", "css-loader": "^1.0.0", "extract-text-webpack-plugin": "^4.0.0-beta.0", "file-loader": "^1.1.11", "html-webpack-plugin": "^3.2.0", "postcss-loader": "^2.1.6", "style-loader": "^0.21.0", "webpack": "^4.16.0", "webpack-cli": "^3.0.8", "webpack-dev-server": "^3.1.4", "webpack-merge": "^4.1.3" }, "dependencies": { "nervjs": "^1.3.1", "react-router-dom": "^4.3.1", "swiper": "^4.3.3" } }

浙公网安备 33010602011771号