/webpack-for-vue

webpack for vue 从零配置

Primary LanguageJavaScript

简介

webpack4.0从零配置实现简单的vue项目配置

运行

npm i
npm run dev

记录

vue + webpack

  1. 安装webpack、webpack-cli(webpack4.0以上需要安装)
  2. 安装vue-loader
  • 解析.vue 的文件
  • v15 的版本需要以插件方式引入才能正常使用
  1. 创建html文件
  • 安装 html-webpack-plugin 插件 (引用后会生成默认的html文件)
  • 配置模板
  1. 安装vue
module.exports = {
// ...
resolve: {
  alias: {
    'vue$': 'vue/dist/vue.esm.js' // 用 webpack 1 时需用 'vue/dist/vue.common.js'
  }
}
}

  1. 安装
  • css-loader,style-loader 解析样式 .css
  1. 配置babel
  • 安装 babel-loader babel-core babel-preset-env
  • 配置 babel-loader
  1. 配置预处理器scss
  • npm install -D sass-loader node-sass
  • 配置loader
  1. 配置postcss-loader
{
    loader: 'postcss-loader',
    options: {
        plugins:[require('autoprefixer')],
        browsers:['last 10 versions']
    }
}
  1. 提取css(将css提取为单独的css文件,请在生产模式下开启,否则无法热加载)
  • npm install -D mini-css-extract-plugin
    {
    test: /\.css$/,
    use: [
        // 'style-loader',
        MiniCssExtractPlugin.loader,
        ]
    }
 plugins:[
        //提取css文件,请在生产环境下使用,否则无法热加载css
        new MiniCssExtractPlugin({
            filename: 'style.css'
        }),
]


  1. 配置图片文件
  • npm i url-loader file-loader -D
  • url-loader会将小于limit大小的图片以base64方式,以减少http请求
  • 大于的file-loader 进入处理
  1. 配置webpack-dev-server

12.清空打包输出目录

  • npm i -D clean-webpack-plugin
const cleanWebpackPlugin = require('clean-webpack-plugin')
new cleanWebpackPlugin([path.join(__dirname,'dist')]),
  1. 配置webpack-dev-server
  • npm i webpack-dev-server -D
plugins:[
   new webpack.HotModuleReplacementPlugin(),
   new webpack.NamedModulesPlugin(),//用户名替代id
]
devServer:{
       contentBase: path.join(__dirname,'dist'),
       compress: true,
       host:'localhost',
       port: 9000,
       hot: true //开启热更新
   }
  1. Scope Hoisting
  • 作用域提升,这是在webpack3中所提出来的。它会使代码体积更小,因为函数申明语句会产生大量代码.
const ModuleConcatenationPlugin = require('webpack/lib/optimize/ModuleConcatenationPlugin');
plugins: [
// 开启 Scope Hoisting
new ModuleConcatenationPlugin(),
],

链接:https://juejin.im/post/5ac42d5c6fb9a028b617b851

  1. js优化
  • npm i webpack-parallel-uglify-plugin -D
const WebpackParallelUglifyPlugin = require('webpack-parallel-uglify-plugin')
plugins: [
new WebpackParallelUglifyPlugin({
      uglifyJS: {
        output: {
          beautify: false, //不需要格式化
          comments: false //不保留注释
        },
        compress: {
          warnings: false, // 在UglifyJs删除没有用到的代码时不输出警告
          drop_console: true, // 删除所有的 `console` 语句,可以兼容ie浏览器
          collapse_vars: true, // 内嵌定义了但是只用到一次的变量
          reduce_vars: true // 提取出出现多次但是没有定义成变量去引用的静态值
        }
      }
    })
]

作者:yanyongchao
链接:https://juejin.im/post/5ab7c222f265da237f1e4434
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考:

- vue-loader 官方文档 
- webpack官方文档  
- 文章: https://juejin.im/post/5ab79fa75188255582525400  
- https://juejin.im/post/5abef5e96fb9a028e33b9035