Entry 用來指定 webpack 的打包入口css
依賴圖的入口是 entryhtml
對於非代碼好比: 圖片、字體依賴也會不斷的加入到依賴圖中react
單入口: entry是一個字符串webpack
module.exports = {
entry: './path/to/my/entry/file.js'
}
複製代碼
多入口: entry 是一個對象es6
module.exports = {
entry: {
app: './src/app.js',
adminApp: './src/adminApp.js'
}
}
複製代碼
module.exports = {
entry:'./path/to/my/entry/file.js',
output:{
filename: 'bundle.js',
path: __dirname + '/dist'
}
}
複製代碼
module.exports = {
entry: {
app: './src/app.js',
search: './src/search.js'
},
output: {
filename: '[name].js', ----------> 經過佔位符確保文件名稱的惟一
path: __dirname + './dist'
}
}
複製代碼
名稱 | 描述 |
---|---|
babel-loader | 轉換es六、es7等新特性語法 |
css-loader | 支持.css文件的加載和解析 |
less-loader | 將less文件轉換成 css |
ts-loader | 將TS轉化成 JS |
file-loader | 將圖片、字體等的打包 |
raw-loader | 將文件以字符串的形式導入 |
thread-loader | 多進程打包js和css |
const path = require('path');
module.exports = {
output: {
filename:'bundle.js'
},
module: {
rules:[
{test:/\.txt$/,use: 'raw-loader'} ----> test 指定匹配規則
use 指定使用的loader名稱
]
}
}
複製代碼
名稱 | 描述 |
---|---|
CommonsChunkPlugin | 將chunk相同的模塊代碼提取成公共js |
CleanWedpackPlugin | 清理構建目錄 |
ExtractTextWebpackPlugin | 將css從bunlde文件裏提取成一個獨立的css文件 |
CopyWebpackPlugin | 將文件或者文件夾拷貝到構建的輸出目錄 |
HtmlWebpackPlugin | 建立html文件去承載輸出的bundle |
UglifyjsWebpackPlugin | 壓縮js |
ZIpWebpackPlugin | 將打包出的資源生成一個zip包 |
const path = require('path');
module.exports = {
output:{
filename: 'bundle.js',
},
plugins: [
newHtmlWebpackPlugin({
template: './src/index.html' -------> 放到 plugins 的數組裏
})
]
}
複製代碼
選項 | 描述 |
---|---|
development | 設置 process.env.NODE_ENV 的值爲 development. 開啓 NameChunkPlugin 和 NameModulesPlugin. |
production | 設置 process.env.NODE_ENV 的值爲 production. 啓用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 UglifyJsPlugin. |
none | 不開啓任何優化項 |
const path = require('path');
module.exports = {
entry: './src/index.js',
output:{
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
+ module: {
+ rules: [
+ {
test: /\.js$/,
use: 'babel-loader'
}
]
}
}
複製代碼
{
'presets':[
+ "@babel/preset-env" -------> 增長es6的 babel preset 配置
],
"plugins": [
"@babel/proposal-class-properies"
]
}
複製代碼
{
'presets':[
"@babel/preset-env",
+ "@babel/preset-react" -------> 增長react的 babel preset 配置
],
"plugins": [
"@babel/proposal-class-properies"
]
}
複製代碼