目前webpack已经到了3.X版本,为了方便通过最新版本打包整个前端应用,现在开始对webpack操作进行简单介绍。

  一、webpack安装

  在安装webpack之前需要注意,webpack是通过npm进行安装的,而npm存在于node.js中,类似于redhat系统的yum,都是包管理工具,只不过npm是前端框架安装管理工具而已,在安装npm需要安装node.js

  1、登录node.js官网:

    https://nodejs.org/zh-cn/

  2、在官网选择TLS稳定版本进行安装,如果是mac系统可以通过自身的brew工具,直接进行安装(brew install nodejs)

  3、在安装完毕后,直接输入nodejs -v和npm -v如果有输出值,说明安装完毕

  3.1、npm安装完毕后,自己创建一个文件夹my-web,今日该文件夹后执行 npm init --yes(或者-y)初始化一个package.json的文件,这个文件里会包含如下信息

{
"name": "vue-loader-demo",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --inline --hot"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {}, #如果是--save会出现在这个{}内
"devDependencies": { #如果是--save-dev会出现这个{}内
"babel": "^6.23.0",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-runtime": "^6.26.0",
"css-loader": "^0.28.7",
"style-loader": "^0.19.0",
"vue-hot-reload-api": "^2.2.3",
"vue-html-loader": "^1.2.4",
"vue-loader": "^13.5.0",
"vue-style-loader": "^3.0.3",
"vue-template-compiler": "^2.5.3"
}
}

  4、安装完毕后,由于npm在国外,所以可以通过安装国内的淘宝cnpm加快安装速度

    登录到https://npm.taobao.org/

    找到安装步骤里的安装执行命令,在终端执行:

    npm install -g cnpm --registry=https://registry.npm.taobao.org

  5、 安装完毕后,webpack可以通过cnpm命令进行安装

  6、执行cnpm install webpack --save(--save表示永久存在,在生产环境需要,--save-dev表示在开发环境中存在)

  执行完毕后,webpack安装完毕

  

  二、webpack文件说明

    webpack文件为webpack.config.js文件,格式如下:

const path = require('path')  //定义path
module.exports={
entry:{
one:'./src/one.js' //入口文件
},
output:{
path: path.resolve(__dirname, 'dist'), //这个是node.js中引入绝对路径的命令
filename: 'output.js' //webpack执行后的出口文件
},
module:{ },
plugins:[],
devServer:{},
}

  在3.X时候可以定义多个入口与出口文件

const path = require('path')  //定义path
module.exports={
entry:{
one:'./src/one.js', //入口文件
two:'./src/two.js'
},
output:{
path: path.resolve(__dirname, 'dist'), //这个是node.js中引入绝对路径的命令
filename: '[name].js' //webpack执行后的出口文件,【name】表示和每一个对应入口文件
},
module:{ },
plugins:[],
devServer:{},
}

  

  三、webpack-dev-server

  3.X开始webpack-dev-server无需单独下载,只需要下载webpack后就会跟着自动下载,同时在webpack.config.js文件中填写配置,还可以实现热更新

const path = require('path')  //定义path
module.exports={
entry:{
one:'./src/one.js', //入口文件
two:'./src/two.js'
},
output:{
path: path.resolve(__dirname, 'dist'), //这个是node.js中引入绝对路径的命令
filename: '[name].js', //webpack执行后的出口文件,【name】表示和每一个对应入口文件
publicPath: '/temp/' //把临时修改都更新到temp目录下,这个目录是不建立的,是虚拟在内存中的目录
},
module:{ },
devServer:{//配置dev-server
contentBase: path.resolve(__dirname, './'),
host: '192.168.2.104',
compress:true,//HTML5压缩
port:9000
},
}

  如果感觉在终端敲webpack-dev-server很麻烦,可以在package.json文件中将它写在scripts下,然后执行npm run server就直接运行了

{
"name": "webpack3learn",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"server": "webpack-dev-server"//在这里增加这个命令,可以简化敲命令的长度
},
"keywords": [],
"author": "",
"license": "ISC"
}

  四、模块

  1、css打包

  使用css打包功能必须使用css.loader和style.loader这两个配合使用,首先登录npmjs的官网找到css-loader:

  https://www.npmjs.com/搜索css-loader

  找到相关命令,安装:

cnpm install css-loader style-loader --save-dev

  安装完毕后,查看模块填写参数,webpack.config.js中:

 module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
const path = require('path')  //定义path
module.exports = {
entry: {
one: './src/one.js', //入口文件
two: './src/two.js'
},
output: {
path: path.resolve(__dirname, 'dist'), //这个是node.js中引入绝对路径的命令
filename: '[name].js', //webpack执行后的出口文件,【name】表示和每一个对应入口文件
publicPath: '/temp/' //把临时修改都更新到temp目录下,这个目录是不建立的,是虚拟在内存中的目录
},
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
devServer: {//配置dev-server
contentBase: path.resolve(__dirname, './'),
host: '192.168.2.104',
compress: true,//HTML5压缩
port: 9000
},
}

在src目录下添加one.css文件

body{
background:#666;
color:#fff;
}

webpack 3.X研究的更多相关文章

  1. 对Webpack 应用的研究-----------------引用

    对大多数 Web 应用来说,页面性能直接影响着流量.这是一个经常为我们所忽视的事实.用户长时间的等待流失的不仅仅是跳出率.转化率,还有对产品的耐心和信赖.很多时候我们没有意识到性能问题,那是因为平常开 ...

  2. 对webpack的初步研究8

    模块 编辑文档 在模块化编程中,开发人员将程序分解为称为模块的离散功能块. 每个模块的表面积小于完整程序,使验证,调试和测试变得微不足道.编写良好的模块提供了可靠的抽象和封装边界,因此每个模块在整个应 ...

  3. 对webpack的初步研究7

    Configuration 您可能已经注意到很少有webpack配置看起来完全相同.这是因为webpack的配置文件是导出对象的JavaScript文件.然后,webpack根据其定义的属性处理此对象 ...

  4. 对webpack的初步研究6

    Plugins 插件是webpack 的支柱.webpack本身构建在您在webpack配置中使用的相同插件系统上! 它们也是这样做的目的别的,一个装载机无法做到的. Anatomy webpack  ...

  5. 对webpack的初步研究5

    Loaders 加载器是应用于模块源代码的转换.它们允许您在处理import或“加载” 文件时预处理文件.因此,加载器有点像其他构建工具中的“任务”,并提供了处理前端构建步骤的强大方法.加载器可以将文 ...

  6. 对webpack的初步研究4

    Mode string module.exports = { mode: 'production' }; webpack --mode=production The following string ...

  7. 对webpack的初步研究3

    Output配置output配置选项告诉webpack如何将编译后的文件写入磁盘.请注意,虽然可以有多个entry点,但只output指定了一个配置. A filename to use for th ...

  8. 对webpack的初步研究2

    Entry Points 如“ 入门”中所述,有多种方法可以entry在webpack配置中定义属性.我们会告诉你,你的方法可以配置的entry属性,除了解释为什么它可能对你有用 Single Ent ...

  9. 对webpack的初步研究1

    一.概念: 1.webpack的核心是用于现代JavaScript应用程序的静态模块捆绑器.当webpack处理您的应用程序时,它会在内部构建一个依赖关系图,它映射您的项目所需的每个模块并生成一个或多 ...

随机推荐

  1. GuidePage底部导航栏

    import 'package:flutter/material.dart'; import 'News.dart'; import 'Video.dart'; import 'Chat.dart'; ...

  2. Odd Gnome【枚举】

    问题 I: Odd Gnome 时间限制: 1 Sec  内存限制: 128 MB 提交: 234  解决: 144 [提交] [状态] [命题人:admin] 题目描述 According to t ...

  3. Python标准模块--concurrent.futures(进程池,线程池)

    python为我们提供的标准模块concurrent.futures里面有ThreadPoolExecutor(线程池)和ProcessPoolExecutor(进程池)两个模块. 在这个模块里他们俩 ...

  4. 要想成为前端大神,那些你不得不知晓的web前端命名规范。

    一.Web语义化 1.1 H5的语义化 对于经验资深的前端er,在给web布局时,相信都会很注重标签和命名的规范.尤其是随着html5的普及发展,更是把web前端语义化推向一个新的台阶上.比如html ...

  5. 714-Card Trick

    思维题,把n个卡片倒着放,然后每个卡片循环放到最底下i次,最后出来的结果就是要求的卡牌顺序 #include<stdio.h> #include<string.h> #incl ...

  6. 清晰的教你如何将 Maven 项目上传至 中央仓库以及版本更新

    项目中总会依赖一些大牛的开源库,例如 Android 开发 通过以下方式就可以方便的引入库.那么如何将我们自己的库也能这样来使用呢?下面我们将详细的讲解每一步的过程: implementation ' ...

  7. MySQL存储过程入门

    MySQL存储过程入门 在本教程中,我们将逐步介绍如何使用CREATE PROCEDURE语句开发第一个MySQL存储过程. 另外,我们将向您展示如何从SQL语句调用存储过程. 编写第一个MySQL存 ...

  8. [Windows端口占用] 找到占用端口的进程并杀死

    命令行: netstat -aon|findstr "80" 会得到类似下列的数据 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2736 2736代表占用 ...

  9. opencv3.0配置opencv_contrib

    在opencv3.0中无法直接使用sift,surf等特征点检测算子,需要额外配置opencv_contrib. 在查看网上诸多教程,失败n次后,终于找到了正确的配置方式. visual studio ...

  10. 『TensorFlow』张量拼接_调整维度_切片

    1.tf.concat tf.concat的作用主要是将向量按指定维连起来,其余维度不变:而1.0版本以后,函数的用法变成: t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, ...