webpack使用简介

1.webpack基本介绍?

webpack是一种各种模块的处理方案,在其作用下,一切皆模块,其主要作用有:

2.webpack的安装和命令行?

  在电脑任意位置下,长按shift键,点检打开powerShell窗口,创建测试文件:

 mkdir->webpack_study->npm init(项目初始化)->npm install wepack --save-dev(安装并将其保存到package.json文件中)

3.打包语法?

webpack  hello.js  hello.bundle.js

对打包语句的扩展:

webpack hello.js hello.bundle.js  --module-bind  'css=style-loader!css-loader'   --watch  ---progress  --display-modules  --display-reasons  

命令解释:

--module-bind(绑定引入的模块)

--watch(监控对应的js文件,一旦变化,自动打包)

扫描二维码关注公众号,回复: 2844507 查看本文章

--progress(显示打包进度)

--display-modules(显示打包的文件有哪些)

--display-reasons(显示打包原因)

上述的命令太长了,在package.json文件中的script对象中添加一个webpack:“ webpack  webpack hello.js hello.bundle.js  --module-bind  'css=style-loader!css-loader'   --watch  ---progress  --display-modules  --display-reasons  ”,然后在shell窗口使用npm run webpack就相当于调用了这句命令行;非常简便;别的npm run  dev、npm run  build同理;

4.建立webpack的基本配置?

在项目中一般会有一个叫webpack.config.js的文件,其中就是保存了webpack的配置;比如:

var path = require('path');
module.exports = {
  //设定文件的读取入口
  entry: {
    main: './src/main.js'
  },
  //文件的打包后的出口,存放在这里
  output: {
    path: path.join(__dirname, './build/'), //打包后的存放路径
    filename: '[name].bundle.js',  //打包后的文件名,在原来的名字后加一个bundle
    publicPath: '/todolist/build/' //发布出去的版本的路径,在打包前的路径前加一个这个路径
  },
  //
  module: {
    loaders: [
      { test: /\.vue$/, loader: 'vue'},
      { test: /\.js$/, loader: 'babel', exclude: /node_modules/},
      { test: /\.scss$/, loader: 'style!css!autoprefixer!sass'},
      { test: /\.(svg|ttf|eot|woff|woff2)(\?.*$|$)/, loader: 'url-loader?importLoaders=1&limit=1000&name=/fonts/[name].[ext]'},
      { test: /\.(png|jpg|gif)$/, loader: 'url-loader'}
    ]
  },
  vue: {
    loaders: {
      css: 'style!css!autoprefixer!sass'
    }
  },
  babel: {
    presets: ['es2015'], //全部转为es6的语法
    plugins: ['transform-runtime']
  },
  resolve: {
    extensions: ['', '.js', '.vue'],
    alias: {
      components: path.join(__dirname, './src/components')
    }
  },
  devServer: {
    historyApiFallback: true,
    hot: true,
    inline: true,
    progress: true
  },
  devtool: '#source-map'
}

5.webpack中的entry和output配置?

entry:配置项目的读取文件入口,如果是单页面项目就只有一个,但是要是多页面项目就有多个;

output:文件打包后输出的位置,名称的配置的地方,配置的选项有三个动态参数[name]/[hash]/[chunkhash],hash是一种MD5的算法,保证每次都是唯一的;

6.自动化生成项目中的HTML页面?

使用webpack的插件html-webpack-plugin;

plugins:[
    new htmlWebpackPlugin({
    	filename:"index-[hash].html",
    	template:'index.html',
    	inject:"head"//将打包后的文件插入到head标签中;还可以设置body/true/false
    	minify:{
    		removeComments:true,  //删除代码注释
    		collapseWhitespace:true,//删除代码间的空格
    	},
    	excludeChunks:[a,b,c]; //除了a,b,c三个js文件别的都引入
    	
    })
]

7.通过使用loader,一种加载器的集合的统称?将现阶段浏览器不能识别的语法转为可以识别的?

webpack本身只能识别js文件,但是可以借助各种loader使其可以识别任何文件比如css/img等;

比如:label-loder将es6转为es5语法的;

在打包的时候,可以将css文件通过require("test.css")的语法引入,但是webpack是不是认识的;必须使用css-loader和style-loader才能使其在页面中发生作用;css-loader使webpack可以对css文件进行打包,style-css使打包后的文件通过link标签插入到页面中;

8.webpack可以处理js/css(sass/less)/img/模板文件;

分别的处理方法是:


---未完待续

猜你喜欢

转载自blog.csdn.net/m0_37631322/article/details/80642047