最近工作忙,学习被暂停了,还是网上多看看资料,多学习学习一下,看到一些好的资料,自己想整理一下,这不,webpack2项目构建都还没有弄懂,webpack3就已经发布了,说实话周末现在真不想看书和研究东西,拿着手机玩玩游戏,看看电视真爽,但是IT行业没有办法,技术在不断的更新,不学习安慰安慰一下自己,心里过不去,万一过1-2年被淘汰了,找份工作都不容易,因此还是多学习学习下,资料多整理一下,刚看完,阮一峰老师写的 45岁以后的人生

说实话,感慨肯定有,不要说45岁以后,就说30来岁,现在周末都不想去折腾技术,所以IT行业会为以后担忧的,好了先不说了;

项目的目录结构如下:

### 目录结构如下:
demo                                        # 工程名
|   |--- dist                               # 打包后生成的目录文件
|   |--- node_modules                       # 所有的依赖包
|   |--- src                                # 项目的文件包
|   |    |--- common
|   |    |     |---css                      # 公用页面的css文件
|   |    |     |---js                       # 公用页面的js文件
|   |---
|   |--- .babelrc                           # 支持es6
|   |--- .gitignore
|   |--- README.md
|   |--- index.html                         # 首页入口文件
|   |--- package.json
|   |--- webpack.config.js                  # 配置文件
|   |--- webpack.production.config.js       # 上线打包配置文件

webpack 配置项如下代码:

// 导入路径包
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {//开启sourceMap便于调试devtool: 'eval-source-map', //入口文件,entry: './src/main.js', output: {// 输出文件到当前目录下的 build文件夹内path: path.resolve(__dirname, 'build'), publicPath: '/assets/', //指定资源文件引用的目录
filename: 'bundle.js' // 指定打包为一个文件 bundle.js// filename: '[name].js' // 可以打包为多个文件
},// 使用loader模块
    module: {/* * 在webpack2.0版本已经将 module.loaders 改为 module.rules, 当然module.loaders也是支持的。* 同时链式loader(用!连接)只适用于module.loader,同时-loader不可省略 */rules: [{test: /\.css$/,use: ['style-loader', {loader: 'css-loader',options: {// modules: true // 设置css模块化,详情参考 https://github.com/css-modules/css-modules
                }}, {loader: 'postcss-loader',// 参考 https://github.com/postcss/postcss-loader
                options: {plugins: function() {return [require('autoprefixer')];}}}]}, {test: /\.styl(us)?$/,use: ['style-loader', 'css-loader', {loader: "postcss-loader",options: {plugins: function() {return [require('autoprefixer')];}}}, 'stylus-loader']}, {test: /\.js$/,loader: 'babel-loader', exclude: /node_modules/ //需要排除的目录
          }]},// 配置devServer各种参数
    devServer: {// contentBase: "./",   // 本地服务器所加载的页面所在的目录hot: true,              // 配置HMR之后可以选择开启historyApiFallback: true, // 不跳转inline: true // 实时刷新
    },plugins: [new HtmlWebpackPlugin({template: './index.html' // 模版文件
        }),new webpack.HotModuleReplacementPlugin() // 热加载插件
    ]
}

package.json 打包配置如下:

"scripts": {"start": "webpack-dev-server","build": "set NODE_ENV=production&&webpack --config ./webpack.production.config.js"},

在项目中 进入项目的根目录后,运行 npm run start 即可运行项目;
在webpack2.0中使用 module.rules 来 代替之前的 module.loaders, 并且使用了 postcss-loader 插件,该插件的作用是:
用来对 .css文件进行处理,并添加在 style-loader 和 css-loader 之后,通过一个额外的 postcss方法来返回所需要使用的 PostCss插件,比如,代码返回
require('autoprefixer') 的作用是 加载 Autoprefixer插件。那么Autoprefixer插件的作用是为 css中的属性添加浏览器特定的前缀,因为一些css新属性,
各个浏览器下并不支持,因此使用该插件就可以做这些事情,比如在页面的代码如下:

h1 {display: flex;
}

那么实际在页面上,通过Autoprefixer插件会自动渲染为:

h1 {display: -webkit-box;display: -ms-flexbox;display: flex;
}

该插件就是解决浏览器前缀的问题,当然还有很多插件都可以往这个里面加。
在webpack的配置文件中可以对devServer 配置如下:

devServer: {// contentBase: "./",   // 本地服务器所加载的页面所在的目录hot: true,              // 配置HMR之后可以选择开启historyApiFallback: true, // 不跳转inline: true // 实时刷新
}

这时候我们就可以监听入口文件的改变,比如目前项目中的入口文件是 main.js,那么main.js及所有通过import进来的css和js文件进来的,只要有修改,都会
实时刷新,但是html文件修改不能实时刷新了,修改后需要我们手动刷新了。如上配置 devServer的 "inline"选项会为页面添加 "热加载"功能,"hot"功能
会开启 "热替换",即首先重新加载组件改变的部分(不是重新加载整个页面),如果两个参数都有的话,当资源改变时,webpack-dev-server将先尝试 热替换,
如果失败则会重新加载整个页面。 但是要实现热加载的话,还需要在代码中加入如下代码:

plugins: [new webpack.HotModuleReplacementPlugin() // 热加载插件
]

配置中 devtool: 'eval-source-map', 配置会生成map文件,便于调试代码。

webpack2.0增加了对ES6模块的支持,不需要任何配置,webpack只针对 import导入和export 导出 的模块才会被编译为ES5,如果想所有的打包文件被编译成ES5的话,需要使用babel编译器转换,因此需要按照babel,然后在项目的根目录文件下 添加 .babelrc文件即可;

{"presets": [["es2015", {"modules": false}]]
}

并且在webpack中需要添加loader,如下:

{test: /\.js$/,loader: 'babel-loader', exclude: /node_modules/ //需要排除的目录
}

git上代码连接

转载于:https://www.cnblogs.com/tugenhua0707/p/7103027.html

webpack2 项目构建一相关推荐

  1. 项目构建之maven篇:2.HelloWorld项目构建过程

    文件结构说明: 项目构建生命周期: 清理 编译 測试 打包 执行 部署 清理与编译 hello\pom.xml POM:Project Object Model,项目对象模型 pom.xml与ant的 ...

  2. 深度学习(五十六)tensorflow项目构建流程

    tensorflow项目构建流程 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce   qq:1393852684 一.构建路线 个人感觉对于任何一个深度学习库 ...

  3. 基于koajs的web项目构建-心得篇

    2019独角兽企业重金招聘Python工程师标准>>> 根据 基于koajs的web项目构建-入门篇 所描述的,建立了项目的基本目录结构,接下来的工作便是编码,编译,测试,发布.做为 ...

  4. Spring Cloud云服务架构 - common-service 项目构建过程

    2019独角兽企业重金招聘Python工程师标准>>> 我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习. 首先在构建spr ...

  5. ReSharper“无法解析符号”,即使在项目构建时

    本文翻译自:ReSharper "Cannot resolve symbol" even when project builds My Tools: 我的工具: Visual St ...

  6. Maven学习总结(2)——Maven项目构建过程练习

    Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建 ...

  7. Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)...

    我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习. 首先在构建spring cloud的common-service之前,我们需要准备的技术: ...

  8. Maven学习总结(二)——Maven项目构建过程练习

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验 ...

  9. Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)

    我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习. 首先在构建spring cloud的common-service之前,我们需要准备的技术: ...

最新文章

  1. 鸟哥的linux私房菜内容,《鸟哥的linux私房菜》学习笔记 权限
  2. Python 报错解决:AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
  3. linux tcpdump monitor模式 抓不到包 解决办法
  4. 《公司理财》_16章_2.财务杠杆学习笔记
  5. 用python爬虫爬微博_利用python爬取微博热搜
  6. Jakarta EE工作组正式成立
  7. 家族关系查询系统程序设计算法思路_七大查找算法(附C语言代码实现)
  8. 在startup中遍历程序集
  9. paip.提升用户体验------c++ 拖曳使用总结..
  10. 对应的ctrl_定位神技Ctrl+G,12种常用操作技巧,你都知道吗
  11. visio2007安装教程_Office Visio 2007如何安装-Microsoft Office Visio 2007安装步骤
  12. AT89S52单片机C语言编程,单片机的C语言应用程序设计_基于AT89S52单片机的篮球计时计分器.doc...
  13. 性能优化 之 节流(throttle)与防抖(debounce) vue 使用
  14. 车载系统大战:左边是BAT,右边是华为小米们
  15. python文件写入后,但文件还是空白
  16. 从头开始react后台管理系统-安装ant-Design
  17. 百度虚拟服务器上传,百度云空间虚拟主机502 Bad Gateway错误
  18. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码
  19. 第七周【任务2】长短期记忆网络LSTM的前向、后向传播
  20. Java基于JSP的网上手机销售系统

热门文章

  1. python模块之codecs: 自然语言编码转换
  2. Portlet MVC框架
  3. 使用Jquery EasyUi常见问题解决方案
  4. 【Vue】—子级向父级传递数据
  5. TrueCommand是什么
  6. 北京时间的拼音及解释
  7. 真正的蓝海是适合你的领域
  8. 做咨询以来,从来坚守一个词——“系统”
  9. 亏了1000万,卖房卖车也要坚持梦想,值吗?
  10. 如何锻炼一个人处理问题的能力?