|
webpack
1.webpack 支持es6 import export ,開箱機(jī)用,但是要使用es6的其他的特性,需要在babel中進(jìn)行配置
2 style-loader, css-loader 打包的css文件會在<style></style>中生成
3. plugins :
html-webpack-plugin
自動生成新的index.html文件
clean-webpack-plugin
清除dist目錄內(nèi)容
WebpackManifestPlugin webpack
能夠?qū)Α改愕哪K映射到輸出 bundle 的過程」保持追蹤
4. npm install --save-dev webpack-dev-server
webpack-dev-server 為你提供了一個(gè)簡單的 web 服務(wù)器,
并且能夠?qū)崟r(shí)重新加載(live reloading)。
如果現(xiàn)在修改和保存任意源文件,web 服務(wù)器就會自動重新加載編譯后的代碼
5.使用 webpack-dev-middleware
webpack-dev-middleware 是一個(gè)中間件容器(wrapper),它將通過 webpack 處理后的文件發(fā)布到一個(gè)服務(wù)器(server)。
6.模塊熱替換 它允許在運(yùn)行時(shí)更新各種模塊,而無需進(jìn)行完全刷新.
const webpack = require(‘webpack');
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin()
7. npm i --save-dev uglifyjs-webpack-plugin
能夠刪除未引用代碼(dead code)的壓縮工具(minifier) - UglifyJSPlugin
source-map
```
new UglifyJSPlugin({
sourceMap: true
}),
```
8. npm install --save-dev webpack-merge
merge(base, dev)
9 指定環(huán)境
```
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
```
10 CommonsChunkPlugin 來移除chunks中重復(fù)的模塊。
11
```.resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
```
12.
```
{
test: /\.(png|svg|jpg|gif)$/,
loader: 'file-loader',
options:{
limit:10000,
name:'img/[name].[hash].[ext]'
}
}
output: {
filename: 'js/[name].[hash].bundle.js',
path: path.resolve(__dirname, 'dist')
},
```
13 npm install --save-dev extract-text-webpack-plugin
```
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
}),
exclude:"/node_modules"
},
new ExtractTextPlugin({
filename:"css/[name].[contenthash].css",
allChunks:true
}),
```
幾個(gè)入口文件 幾個(gè)css
css 壓縮 use: ["css-loader?importLoaders=1&&minimize",
14 psotcss
nam i psotcss-loader autoprefixer -D
webpack
```
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: ["css-loader?importLoaders=1","postcss-loader"]
}),
exclude:"/node_modules"
},
```
使用@import引入時(shí)無法加上前綴 使用?importLoaders=1來hack
posts.config.js
```
module.exports = {
plugins: [
require('autoprefixer')({
browsers: ['last 5 versions']
})
]
}
```
15 npm install --save-dev babel-core babel-loader babel-preset-es2015
```
{
test: /\.js$/,
use:['babel-loader'],
exclude: "/node_modules"
}
.baselrc
{
"presets": [
"es2015"
]
}
```
|
|