webpack基本配置

javascript

JavaScript

2020-06-23 19:03:14

261

作者:黑夜男神


// 引用node path 对象 获取路径
var path  = require('path');
// 打包生成html 文件 与根目录index.html  相关联
var htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
  context: __dirname,
  // 入口文件
  entry: './src/app.js',
  // 打包后文件输出
  output: {
    path: path.resolve(__dirname, 'dist/'),
    // 打包生成后点文件名 本地路径
    filename: 'js/[name].js',  
  },
  // resolve.alias配置项通过别名来把原来导入路径映射成一个新的导入路径。所以我们可以直接用@符号来代表 src文件下所有的资源
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src')
    }
  },
   // 配置资源引用
   module: {
    loaders:[
      {
        test: /\.js$/,  // 匹配所有的js文件  支持es6 语法
        loader: 'babel-loader',
        //exclude: './node_modules/',  // 排出需要打包的JS文件
        include: path.resolve(__dirname, './src/'), // 包含需要打包的JS文件
        query: {
          presets: ['latest']
        }
      },
      // 配置模版引擎
      {
        test: /\.html$/,
        use: [
          'html-loader'
        ]
      },
      // 配置css  引用
      {
        test:/\.(less|css)$/,       
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: { importLoaders: 1 } //这里可以简单理解为,如果css文档中有import 进来的文档也进行处理
          },
          'less-loader',  // 处理less 后缀多文件        
          {
            loader: 'postcss-loader',
            options:{ // 如果没有options这个选项将会报错 No PostCSS Config found
              plugins:(loader) => [
                require('autoprefixer')({ root: loader.resourcePath}),
                require('autoprefixer')(), // css 兼容
                require('cssnano')() // 压缩
              ]
            }
          }
        ]
      },
      // 配置图片规则 
      {
        test: /\.(png|jpg|png|gif|svg)$/i,
        use:[
          {
            loader: 'url-loader',
            options: {
              limit: 10000,
              name: 'assets/[name].[hash:5].[ext]'
            }

          }
        ]
      }

    ]   
  },
  plugins: [
    new htmlWebpackPlugin({
      filename:'index.html',  // 定义生成html 文件名
      template: 'index1.html',// 定义开发环境中根目录关联的html模版名称
      inject:'body',           // Js脚本需要插入在页面那个标签的位置
      title: 'webpack is good', // 通过ejs 模版语法可以取到这个值<%= htmlWebpackPlugin.options.title %>
      // 打包上线压缩
      minify: {
        // 删除注释
        removeComments: true,
        // 删除空格
        collapseWhitespace: false
      } 
    })
  ]
}

评论 (0)

用户名
邮箱
评论

    Copyright © 2020 darkNightMan All Rights Reserved Pro 黔ICP备20005477号