webpack配置方式

npm起源、概念与优势

  • npm是一个包管理工具
  • npm开始是专门为了node.js准备的一个包管理工具,通过npm可以下载并使用网上已经封装好的js代码
  • CommonJS很大一部分是对于模块系统的规范,方便引入js文件,但通过require引入的js文件无法被浏览器识别
  • webpack可以把通过require引入的js文件编译为浏览器支持的js文件,并把多个文件打包成一个js文件,对于性能的提升具有十分巨大的优势
//webpack配置文件webpack.config.js
//npm install babel-core babel-preset-env babel-loader --save-dev 
//安装babel
module.exports = {
 entry: './index.js',
 output: {
   filename: 'bundle.js'
 },
 module: {
   rules: [ // 手动加粗
     {
       test: /\.js$/,
       exclude: /node_modules/,
       use: {
         loader: 'babel-loader', //使babel与webpack进行良好的协作
         options: {
           presets: ['env']
         }
       }
     }
   ]
 }
};
  • babel可以把ES6和之后的新特性编译为更早更兼容的ES5,并可以在webpack打包的时候使用babel,方便我们使用最新的特性来进行可读性更好,更简洁的代码编写。
  • 通过对于package.json的配置,可以让webpack使用npm脚本
  • 安装webpack-dev-server,json文件后以一个热更新的web服务器运行程序
{
 "name": "modern-javascript-example",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": { // 手动加粗
   "test": "echo \"Error: no test specified\" && exit 1",
   "build": "webpack --progress -p",   //运行带有--progress选项显示进程,-p选项最小化生产代码
   "watch": "webpack --progress --watch", //每次修改JS文件后重新运行webpack命令
   "server": "webpack-dev-server --open"
 },
 "author": "",
 "license": "ISC",
 "dependencies": {
   "moment": "^2.19.1"
 },
 "devDependencies": {
   "babel-core": "^6.26.0",
   "babel-loader": "^7.1.2",
   "babel-preset-env": "^1.6.1",
   "webpack": "^3.7.1"
 }
}

npm使用注意事项

.npmignore 与.gitignore 配置规则
# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

webpack的配置

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件
module.exports={
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件
module.exports={
    entry: //配置打包起点  当我们只有一个入口时,可以通过字符串形式来进行简写。
    	   //当我们有多个入口时,可以通过对象语法来进行配置
    	   //{
    	   //	app:'./src/app.js'
    	   //}
    output: { //配置打包后的文件放置路径与打包后的文件名 无论我们有多少个起点,出口只有一个
    		//
    	path:path.resolve(__dirname,'dist'), //放置文件的文件夹
        filename:'' //文件名
    }
    mode: 'production' //模式  有三个选项: none,development,production(默认)
		//使用mode时,必须将配置导出为一个函数,相对来说mode很少使用,大部分时间都是尝试自己配  		  //置,而不是采用webpack的内置优化
    module:{
        rules:[ //webpack允许在配置时拥有多个loader,通过这种方式配置loader会使我们的代码				 	//变得更加简洁并更利于维护,当使用多个loader时,loader自下往上执行。
            {
                test: /\.js$/, //标识出应该被对应loader进行转换的文件
                use:{
                    loader:'babel-loader' //进行loader转换的文件
                }
            }
        ]
    },
    plugins:[  //webpack插件
        new HtmlWebpackPlugin({template:'./src/index,html'})
    ]
}
}
上一篇:什么是es6


下一篇:缺失文件引发的「吐血」事件