webpack基本使用
下载:npm install webpack@3.6.0 -S-dev 开发环境dev时使用webpack,项目上线后不需要webpack 3.6.0版本常用且较为简单局部webpack与全局webpack 全局webpack:cmd终端直接执行webpack或者webpack pathA pathB 局部webpack:配置package.json文件(npm管理文件)内的script脚本,执行npm run build
“scripts”: { “test”: “echo “Error: no test specified” && exit 1”, “build”:“webpack” } package.json中的script脚本在执行时 首先寻找本地的node_module/.bin路径中对应的命令 其次再去找全局的环境变量中寻找
webpack打包
JS文件打包 方案一 执行webpack 原文件路径 打包后文件路径,例子------webpack ‘./src/index.js’ ‘./dist/bundle/js’ 方案二 编译webpack.config.js,执行webpack
let path
= require('path')
module
.exports
= {
entry
:{
main
:'./src/js/index.js'
},
output
: {
filename
: '[name].bundle.js',
path
: path
.resolve(__dirname
,'dist'),
}
}
样式文件打包(参考文档)
loader作用
style-loader将模块的导出作为样式添加到 DOM 中css-loader解析 CSS 文件后,使用 import 加载,并且返回 CSS 代码less-loader加载和转译 LESS 文件sass-loader加载和转译 SASS/SCSS 文件postcss-loader使用 PostCSS 加载和转译 CSS/SSS 文件stylus-loader加载和转译 Stylus 文件
处理less文件例子
module
.exports
= {
...
module
: {
rules
: [{
test
: /\.less$/,
use
: [{
loader
: "style-loader"
}, {
loader
: "css-loader"
}, {
loader
: "less-loader", options
: {
strictMath
: true,
noIeCompat
: true
}
}]
}]
}
};
图片文件打包
loader作用
raw-loader加载文件原始内容(utf-8)针对txtval-loader将代码作为模块执行,并将 exports 转为 JS 代码url-loader像 file loader 一样工作,但如果文件小于限制,可以返回 data URLfile-loader将文件发送到输出文件夹,并返回(相对)URL
注意:url-loader可以看作进阶版的file-loader(两个loader使用其一即可) 处理txt文本、png图片例子
module
.exports
= {
...
module
: {
rules
: [{
test
: /\.txt$/,
use
: 'raw-loader'
}, {
test
: /\.(png|jpg|gif)$/,
use
: [{
loader
: 'url-loader',
options
: {
limit
: 8192,
name
:'[name].[hash:8].[ext]',
outputPath
:'img/',
publicPath
:'dist/img'
}
}]
}]
}]
}
};
转换编译:ES6→ES5
module
.exports
= {
...
module
: {
rules
: [{
test
: /\.js$/,
exclude
: /(node_modules|bower_components)/,
use
: {
loader
: 'babel-loader',
options
: {
presets
: ['@babel/preset-env']
}
}
}]
}
};
Vue文件打包
const VueLoaderPlugin
= require('./node_modules/vue-loader/lib/plugin.js')
module
.exports
= {
...
module
: {
rules
: [{
test
: /\.vue$/,
use
: [{
loader
: 'vue-loader',
}]
}]
},
plugins
:[
new VueLoaderPlugin()
]
};
处理js文件中的Vue代码需配置以下操作(令Vue指向runtime-complier模式而不是runtime-only模式)
module
.exports
= {
resolve
:{
alias
:{
'$vue':'vue/dist/vue.esm.js'
}
}
}
webpack插件
plugin
定义:对webpack现有功能的扩展 作用:优化打包跟文件压缩html-webpack-plugin 作用:1)打包自动生成index.html文件(可以指定模板);2)自动通过script标签将打包的js文件插入body中
const HtmlWebpackPlugin
= require('html-webpack-plugin')
module
.exports
= {
...
plugins
: [new HtmlWebpackPlugin({
template
:'index.html'
})]
};
webpak.BannerPlugin 作用:给生成的js文件添加版权说明(webpack自带)
const webpack
= require('webpack')
module
.exports
= {
...
plugins
: [new webpak.BannerPlugin('版权说明')]
};
webpack本地服务器
module
.exports
= {
...
devServer
:{
contentBase
:'./dist',
inline
:true
}
配置文件分离
const {smart
} = require('webpack-marge')
const main
= require('./prod.config,js')
module
.exports
= smart(main
,{
...
XXX
devServer
:{
contentBase
:'./dist',
inline
:true
}
})
Vue-cli安装
前提 1)node 2)npm 3) webpack安装:npm install -g @vue/cli创建项目(参考)
vue create my
-project
vue ui
npm install
-g @vue
/cli
-init
vue init webpack my project