标签:拼接 ESS class 语法 const exit loader 本地 必须
webpack中的代码都是以模块化来进行编写
全局安装
npm install webpack@3.6.0 -g
局部安装
npm install webpack@3.6.0 --save-dev
--save-dev
是开发时依赖,项目打包后不需要继续使用的。
使用方法
运行如下命令,让webpack自动帮你打包main.js,它会自动帮你处理好各种依赖
//3.6.0用法
webpack ./src/main.js ./dist/bundle.js
//4.0用法
webpack ./src/main.js -o ./dist/bundle.js
手动配置package
npm init
package全局与本地命令
配置webpack.config.js
const path = require('path')
module.exports = {
entry : './src/main.js',
output : {
//resolve拼接当前目录,绝对路径
path:path.resolve(__dirname,'dist'),
filename:'bundle.js'
}
}
注意:
在开发中,我们不仅要处理js文件,还要将cs,typescript,图片,es6等转换成浏览器能够处理的文件
,只有webpack是做不到那么多的,所以需要安装扩展loader
使用方法:
url-loader和file-loader的配置文件只能使用一个
开发时如果图片和html不在同一个文件夹,可以在webpack.config.js里output中设置publicPath:‘dist/‘ 。
就会默认引用该路径中的文件
和url-loader的区别:
开发中打包图片我们想要使用原来的名字,可以在options中自定义文件的名字
options: {
//img文件夹中,原来文件名+8位哈希值+原格式extension的缩写
name:'img/[name].[hash:8].[ext]'
}
webpack打包的js文件中还存在es6语法,由于部分浏览器不支持es6,所以我们需要帮它转换成es5
安装方法:
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
配置直接去官网找,把presets改成es2015即可
vue运行时也需要依赖,所以安装时不用添加-dev
npm install vue --save
注意:
vue模块导出时使用的export default方法,所以导入不用加大括号{}。
import Vue from 'vue'
vue.runtime-only版本不可以有template。但vue实例默认就是template,所以打包时报错。
应该切换包含compiler的版本
//在webpack.config中配置,和module同级
resolve:{
//alias:别名。切换vue版本
alias:{
//esm:esmodule
'vue$':'vue/dist/vue.esm.js'
}
}
引用组件时必须写扩展名,我们也可以设置,使不写扩展名也可引用
//在webpack.config中配置,和module同级
resolve:{
//alias:别名。切换vue版本
alias:{
//esm:esmodule
'vue$':'vue/dist/vue.esm.js'
},
//extensions:扩展名
extensions:['.js','.css','vue']
}
我们引用vue时直接写import app from ‘App‘
即可
安装vue-loader和template-compiler
npm install vue-loader vue-template-compiler --save-dev -D
配置文件
Vue Loader 的配置和其它的 loader 不太一样。除了通过一条规则将 vue-loader 应用到所有扩展名为 .vue 的文件上之外,
请确保在你的 webpack 配置中添加 Vue Loader 的插件:
配置vue-loader官网
//引用插件,将下行代码添加至webpack.config头部
const { VueLoaderPlugin } = require('vue-loader');
//配置vue-loader
module.exports = {
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
}
]
},
plugins: [
// new一个插件,并记得引用!
new VueLoaderPlugin()
]
}
webpack中的插件,就是对webpack现有功能的各种扩展,比如打包优化,文件压缩等等。
使用方法:
在webpack.config.js中的plugins中配置插件。
//如版权配置。和module同级
plugins:[new webpack.BannerPlugin('这里是Vicer的版权')]
//别忘记在头部引入
const webpack = require('webpack')
默认html文件在根目录中,而我们需要将index.html文件打包到dist文件夹中发布
所以需要使用HtmlWebpackPlugin插件
将打包的js文件,自动通过script标签插入到body中
npm install html-webpack-plugin --save-dev
配置文件:
plugins: [
new htmlWebpackPlugin({template:'index.html'})
]
对打包的js文件进行压缩
这里我们使用1.1.1版本,与cl2保持一致
npm install uglifyjs-webpack-plugin@1.1.1 --save-dev
配置文件:
const uglifyJsPlugin = require('uglifyjs-webpack-plugin');
plugins: [
new uglifyJsPlugin()
]
webpack提供了一个可选的本地开发服务器,这个本地服务器基于node.js搭建,内部使用express框架,
可以实现我们想要的让浏览器自动刷新显示我们修改后的结果。
简而言之就是热更新
这里我们使用2.9.0版本,与webpack3.6.0相对应
npm install --save-dev webpack-dev-server@2.9.1
配置选项:
historyApiFallback:在SPA页面中,依赖HTML5的history模式
//和module同级
devServer:{
contentBase:'./dist',
inline:true
}
注意:命令中可以添加 --open,在自动更新时打开页面
"dev": "webpack-dev-server --open"
在开发过程中,有的配置开发时用,有的配置生成时用,为了对应不同的时期我们可以做一个配置分离
安装webpack合并工具
npm install webpack-merge --save-dev
//无需配置webpack.config文件,使用时导入即可
//这里以生产prod.config.js为例
const uglifyJsPlugin = require('uglifyjs-webpack-plugin');
//必备导入
const webpackMerge = require('webpack-merge');
const baseConfig = require('./base.config.js');
//合并配置并导出
module.exports = webpackMerge(baseConfig,{
plugins: [
//插件按需导入
new uglifyJsPlugin()
]
});
修改pageage文件
但我们要使用配置分离中的文件,所以script要手动引用相应的config文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config ./build/prod.config.js",
"dev": "webpack-dev-server --open --config ./build/dev.config.js"
}
修改基础配置文件
打包中发现直接打包到了配置文件夹,但我们希望其打包到父级目录总结
使用npm run build 生产时打包文件
使用npm run dev 开发时打包文件
标签:拼接 ESS class 语法 const exit loader 本地 必须
原文地址:https://www.cnblogs.com/lovecode3000/p/12322910.html