Component 未定義,應(yīng)該是 ProvidePlugin 插件的問題,我把ProvidePlugin在生產(chǎn)配置文件中配置,打包后就沒問題了,但是js體積過大,配置在下面
{
"name": "autobuild",
"version": "1.0.0",
"description": "",
"private": true,
"scripts": {
"start": "webpack-dev-server --open --config webpack.dev.conf.js",
"build": "webpack --config webpack.prod.conf.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^8.5.0",
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"clean-webpack-plugin": "^0.1.19",
"css-loader": "^0.28.11",
"file-loader": "^1.1.11",
"jquery": "^3.3.1",
"mini-css-extract-plugin": "^0.4.0",
"postcss-cssnext": "^3.1.0",
"postcss-loader": "^2.1.5",
"postcss-pxtorem": "^4.0.1",
"react-router-dom": "^4.3.1",
"style-loader": "^0.21.0",
"url-loader": "^1.0.1",
"webpack": "^4.8.3",
"webpack-cli": "^2.1.3",
"webpack-dev-server": "^3.1.4",
"webpack-merge": "^4.1.2"
},
"dependencies": {
"imagemin-webpack-plugin": "^2.1.5",
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-redux": "^5.0.7",
"redux": "^4.0.0"
},
"sideEffects": [
"*.css"
]
}
1.webpack.base.conf.js
const path = require("path");
const webpack = require('webpack');
// const CleanWebpackPlugin = require('clean-webpack-plugin');
// const MiniCssExtractPlugin = require("mini-css-extract-plugin"); //CSS文件單獨提取出來
module.exports={
entry:{
//不打包:第三方插件 和 公共代碼
index:[
'./src/index.js',
'./src/js/base.js'
]
},
output:{
//webserve 時是否不再起作用
path:path.resolve(__dirname,'./dist'),
filename:'[name].js'
},
optimization: {
//打包 第三方庫
//打包 公共文件
splitChunks: {
cacheGroups: {
vendor:{//node_modules內(nèi)的依賴庫
chunks:"all",
test: /[\\/]node_modules[\\/]/,
name:"vendor",
minChunks: 1, //被不同entry引用次數(shù)(import),1次的話沒必要提取
maxInitialRequests: 5,
minSize: 0,
priority:100,
// enforce: true?
}
}
},
runtimeChunk: {
name: 'manifest'
}
},
module:{
rules:[
{
test: /\.css$/,
use: [{
loader:"style-loader" ,// MiniCssExtractPlugin.loader, //
},{
loader: "css-loader"
},{
loader: "postcss-loader"
}],
include: path.join(__dirname, 'src'), //限制范圍,提高打包速度
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|(woff)|(woff2)|(svg)|(eot)|(ttf))$/,
use: [{
loader: "url-loader",
options:{
limit: 8192, //單位byte,小于8KB的圖片都會被編碼(base64)放打包在js中
name: './images/[name].[ext]' //圖片復(fù)制到指定位置
}
}]
},{
test: /\.js$/,
exclude: /(node_modules)/,//只是節(jié)約打包時間,這些文件夾內(nèi)的js不會babal處理
use: {
loader: 'babel-loader',
options: {
presets: ['env','react']
}
}
}]
},
plugins:[
]
}
2.webpack.dev.conf.js
const merge = require('webpack-merge');
const baseConfig = require('./webpack.base.conf.js');
const webpack = require('webpack');
module.exports = merge(baseConfig, {
mode: 'development',
devtool: 'inline-source-map',
devServer: {
contentBase: './dist',
hot: true,
host: "0.0.0.0"
},
plugins:[
new webpack.HotModuleReplacementPlugin(),
//這些變量不必再import了
new webpack.ProvidePlugin({
$:'jquery',
React:'react',
Component:['react','Component'],
PureComponent:['react','PureComponent'],
ReactDOM:'react-dom'
})
]
});
3.webpack.prod.conf.js
const merge = require('webpack-merge');
const baseConfig = require('./webpack.base.conf.js');
const ImageminPlugin = require('imagemin-webpack-plugin').default;
module.exports = merge(baseConfig, {
mode: 'development',
plugins:[
new ImageminPlugin({
pngquant: {//圖片質(zhì)量
quality: '95-100'
}
})
]
});
1.報錯時輸出
2.修改后輸出(把ProvidePlugin配置移動到webpack.dev.conf.js)
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。