依赖安装 : 

全局安装webpack : sudo npm install webpack -g

本地安装webpack : npm install webpack —save-dev  需要注意的是 : 在安装之前确保项目中有package.json文件存在,没有通过 npm init 创建

 

npm info webpack  : 查看webpack 版本信息

 

npm install webpack@1.12.x —save-dev 安装指定版本的webpack

 

webpack 开发工具安装 : npm install webpack-dev-server —save-dev

 

require() : 添加外部文件

 

npm install css-loader style-loader :加载css样式的包 , 加载配置 :require(‘style-loader!css-loader!./file路径’);

 

加载样式模块 : 文件内部加载css样式不写’style-loader!css-loader!’,命令行加载 :webpack file1 file2  —module-bind ‘css=style-loader!css-loader’

http://webpackdoc.com/configuration.html

 

webpack --progress --colors : 显示编译进度

webpack --progress --colors --watch : 监听服务,但是需要手动刷新页面来查看更新;

webpack-dev-server : 开启一个服务器,监控并打包,自动刷新页面;

webpack-dev-server --progress --colors

 

 

package.json  配置如下 : 

{

  "name": "webpack-example",

  "version": "1.0.0",

  "description": "A simple webpack example.",

  "main": "bundle.js”,//打包输出文件

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "keywords": [

    "webpack"

  ],

  "author": "week”,//作者

  "license": "MIT",

  "devDependencies": {

    "css-loader": "^0.21.0",

    "style-loader": "^0.13.0",

    "webpack": "^1.12.2"

  }

}

 

 

package.config.js 配置如下 : 

 

var webpack = require('webpack')

 

module.exports = {

  entry: './entry.js’,//引入文件

  output: {

    path: __dirname,

    filename: 'bundle.js’//输出打包

  },

  module: {

    loaders: [

      {test: /\.css$/, loader: 'style-loader!css-loader’}//css模块

    ]//加载模块

  },

  plugins: [

    new webpack.BannerPlugin('This file is created by week')

  ]//创建head注释信息

}

 webpack.config.js的配置 :

一.webpack基础

  1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息。(也可以不生成package.json文件,但是package.json是很有用的,所有建议生成)

  2.安装webpaack

    a.在全局中安装webpack:npm install webpack -g

    b.将webpack安装到项目并将webpack写入package.json的devDependencies中:进入项目根目录,然后在命令行中输入npm install webpack --save-dev。

  3.打包模块

  webpack <entry> <output>。<entry>用于指定打包的文件,<output>用于指定打包后的文件。如webpack app/index.js       build/build.js表示将app文件夹中的index.js打包到build文件夹中的build.js中。

二.webpack配置文件常用配置项介绍

  1.webpack有一个默认的配置文件webpack.config.js,这个文件需要手动的创建,位于项目根目录中。可以为一个项目设置多个配置文件,已达到不同的配置文件完成不同的功能。怎么设置后面介绍。

  2.webpack的配置文件会暴露出一个对象,格式如下:

    module.exports = {
      //配置项
    }

  3.常用配置项将要说明

    entry:打包的入口文件,一个字符串或者一个对象
    output:配置打包的结果,一个对象
      fileName:定义输出文件名,一个字符串
      path:定义输出文件路径,一个字符串
    module:定义对模块的处理逻辑,一个对象
      loaders:定义一系列的加载器,一个数组
        [
          {
            test:正则表达式,用于匹配到的文件
            loader/loaders:字符串或者数组,处理匹配到的文件。如果只需要用到一个模块加载器则使用                 loader:string,如果要使用多个模块加载器,则使用loaders:array

            include:字符串或者数组,指包含的文件夹
            exclude:字符串或者数组,指排除的文件夹
          }
        ]
    resolve:影响对模块的解析,一个对象
      extensions:自动补全识别后缀,是一个数组

    plugins:定义插件,一个数组

  4.entry详细说明

    (1)当entry是一个字符串时,这个字符串表示需要打包的模块的路径,如果只有一个要打包的模块,可以使用这种
    形式

    (2)当entry是一个对象
      a.是数组时,当需要将多个模块打包成一个模块,可以使用这个方式。如果这些模块之间不存在依赖,数组中
      值的顺序没有要求,如果存在依赖,则要将依赖性最高的模块放在最后面。
      例如:entry:["./app/one.js",".app/two.js"]
      b.是键值对形式的对象是,当需要分别打包成多个模块时,可以使用这种方式,例如;
      entry:{
        module1:"./app/one.js",
        module2:["./app/two.js","./app/three.js"]
      }
    注:当entry是一个键值对形式的对象时,包名就是键名,output的filename不能是一个固定的值,因为每个包的
    名字不能一样

  5.output详细说明

    (1)output是一个对象

    (2)output.filename:指定输出文件名,一个字符串。当输出一个文件,output.filename为一个确定的字符串
      如:output:{
          filename:"build.js"
            }
      当输出多个文件,output.filename不能为一个确定的字符串。为了让每个文件有一个唯一的名字,需要用到下面
      的变量
      [name] is replaced by the name of the chunk.对应entry的键名

      [hash] is replaced by the hash of the compilation.

      [chunkhash] is replaced by the hash of the chunk.

      如:output:{

          path:'./build/',

          fialname:'[name].js'

        }
      (3)output.path:指定输出文件的路径,相对路径,一个字符串
      (4)output中还有其他的一些值,不在这里说明,可以在webpack的官方网站中获得更多的详细信息

  6.module.loaders详细说明

    (1)module是一个对象,定义对模块的处理逻辑
    (2)module.loaders是一个数组,定义一系列加载器,这个数组中的每一项都是一个对象
    (3)module.loaders:[
        {
          test:正则,用于匹配要处理的文件
          loader/loaders: 字符串或者数组, 如果只需要用到一个模块加载器 ,则使用loader:string,
          如果要使用多个模块加载器,则使用loaders:array
          include:字符串或者数组,指包含的文件夹
          exclude:字符串或者数组,指排除的文件夹
        }
      ]
    (4)module除了可以配置loaders以外还能配置其他的值,在webpack的官网中获得更多的信息

  7.resolve.extensions详细说明

    (1)resolve.extensions并不是必须配置的,当不配置时,会使用默认值
    ["", ".webpack.js", ".web.js", ".js"],当手动为resolve.extensions设置值,
    它的默认值会被覆盖
    (2)如果你想要每个模块都能够按照它们自己扩展名正确的被解析,要在数组中添加一个空字符串。
    (3)如果你想请求一个js文件但是在请求时不带扩展(如:require('somecode')),那么就需要
    将'.js'添加到数组中。其他文件一样
    (4)resolve还有其他的配置项,在webpack的官网获得更多信息

  8.补充

    (1)当设置了配置文件后,在命令行中输入webpack就可按照默认配置文件中的配置项打包模块了。

    (2)设置多个webpack配置文件。webpack默认的配置文件是webpack.config.js,当在命令行中输入webpack时默认找的是          webpack.config.js。通过在package.json的scripts中添加例如
    "start-html":"webpack --config webpack.html.config.js"
    在命令行中输入npm run start-html查找的就是webpack.html.config.js,通过这种方式可以实现不同的
    配置文件有不同的用处,这样就不用反复修改同一个配置文件

  9.下面是一个简单的配置文件

  

module.exports = {
entry:{
one:"./app/one.js",
two:"./app/two.js"
},
output:{
path:"./build/",
filename:"[name].js"
},
module:{
loaders:[
{
test:/.*\.css$/,
loaders:["style","css"],
exclude:'./node_modules/'
}
]
},
resolve:{
extensions:['','.css','.js','jsx']
}
};

三.webpack-dev-server

  1.webpack-dev-server是一个轻量级的服务器,修改文件源码后,自动刷新页面将修改同步到页面上

  2.安装webpack-dev-server:
    全局安装:npm install webpack-dev-server -g
    在项目中安装并将依赖写在package.json文件中:npm install webpack-dev-server --save-dev

  3.使用命令webpack-dev-server --hot --inline完成自动刷新
  4.默认的端口号是8080,如果需要8080端口被占用,就需要改端口,webpack-dev-server --port 3000(将端口号改为3000)

  5.安装webpack-dev-server后就可以在命令行中输入webpack-dev-server开启服务,然后在浏览器地址栏中
  输入localhost:端口号,就可以在浏览器中打开项目根目录的index.html文件,如果项目根目录中没有index.html
  文件,就会在浏览器中列出项目根目录中的所有的文件夹。
  6.第五条只是启动服务并不能自动刷新,要自动刷新需要用到webpack-dev-server --hot --inline

  7.当使用webpack-dev-server --hot --inline命令时,在每次修改文件,是将文件打包
  保存在内存中并没有写在磁盘里(默认是根据webpack.config.js打包文件,通过--config xxxx.js修改),这种打包得到的文件
  和项目根目录中的index.html位于同一级(但是你看不到,因为
  它在内存中并没有在磁盘里)。使用webpack命令将打包后的文件保存在磁盘中
  例如在index.html文件中引入通过webpack-dev-server --hot --inline打包的build.js
    <script src="build.js"></script>
  在index.html文件中引入通过webpack命令打包的build.js
    <script src="./build/build.js"></script>

  8.每一次都敲一长串命令太麻烦,在项目根目录的package.json文件的scripts配置中添加配置,如
  "build":"webpack-dev-server --hot --inline",然后在命令行中输入 npm run build就能
  代替输入一长串命令(webpack-dev-server --hot --inline),运行webpack-dev-server --hot --inline默认是找        webpack.config.js,通过--config命令可以修改为另一个配置文件。例如:webpack-dev-server --hot --inline --config      'webpack.es6.config.js'

  9.配置根目录

    (1)当在命令行中输入webpack-dev-server --hot --inline,再在浏览器中输入localhost:端口号,浏览器会在项目的

     根目录中去查找内容,通过--content-base可以配置根目录。

    如webpack-dev-server --hot --inline --content-base './build/',在build文件夹中去加载index.html,如果没有

    index.html文件,将会在浏览器中显示所有build目录下的文件和文件夹

四.例子

  我一个设置了两个webpack的配置文件分别是webpack.config.js和webpack.react.config.js。package.json文件中scripts对象的内容如下:

  "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "react": "webpack --config webpack.react.config.js",
  "build": "webpack-dev-server --hot --inline --content-base ./build/",
  "build-react": "webpack-dev-server --hot --inline --content-base ./react-build/ --config webpack.react.config.js"
    }

webpack 操作的更多相关文章

  1. webpack操作基础

    webpack 是一个前端加载/打包工具,根据模块的依赖关系进行静态分析,并依根据规则生成对应的静态资源

  2. webpack学习(入门基础)

    webpack的学习webpack是什么?1:加载模块(将JS.sass/less.图片等作为模块来处理使用) 2:进行打包 webpack的优势?1:webpack以commonJS(JS的规范)的 ...

  3. webpack 3.X研究

    目前webpack已经到了3.X版本,为了方便通过最新版本打包整个前端应用,现在开始对webpack操作进行简单介绍. 一.webpack安装 在安装webpack之前需要注意,webpack是通过n ...

  4. 快速了解前端打包 webpack

    一.介绍 (1)概念 webpack 用于编译 JavaScript 模块,是 JavaScript 静态模块的打包工具.从 webpack v4.0.0 开始,可以不用引入一个配置文件. (2)核心 ...

  5. vue | 基于vue的城市选择器和搜索城市对应的小区

    城市选择器应该是比较常用的一个组件,用户可以去选择自己的城市,选择城市后返回,又根据自己选择的城市搜索小区. 功能展示 这是选择结果 这是选择城市 这是搜索小区 这是搜索小区接口,key为城市名字,i ...

  6. webpack优化相关操作

    1.缩小文件搜索的范围 • 优化loader配置 尽量精确使用 include 只命中需要的文件.    module.exports = {      module: {        rules: ...

  7. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  8. webpack 自动运行,及打包 img css json 的操作 npm插件的使用方法

    没有指令操作的属性生产环境,有指令操作的属于开发环境 webpack:输入指令后,便会自动开启一个浏览器 需要插件:open-browser-webpack-plugin 生产环境 想使用 node. ...

  9. Webpack打包工具实时更新操作(启用观察者模式)

    可能存在这样的问题,每次修改完js/css文件之后,都要进行手动打包一下,浏览器上刷新一下. 那么我一般这样做: 1.安装Hbuilder,并启用边编辑边看的模式(其实这个是默认的). 2.启动Web ...

随机推荐

  1. 第五章 Python之装饰器

    函数对象 函数是第一类对象:即函数可以当作数据传递 #可以被引用,可以被当作参数传递,返回值可以是函数,可以当作容器类型的元素 #引用 def func(x,y): print(x,y) f=func ...

  2. luogo p3379 【模板】最近公共祖先(LCA)

    [模板]最近公共祖先(LCA) 题意 给一个树,然后多次询问(a,b)的LCA 模板(主要参考一些大佬的模板) #include<bits/stdc++.h> //自己的2点:树的邻接链表 ...

  3. [置顶] 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包

    作者:chenzhou123520 出处:http://chenzhou123520.iteye.com/blog/1706242 使用 maven 插件 maven-shade-plugin 对 j ...

  4. IOS - 网络指示器

    #pragma mark Activity methods - (void)openActivity { // 添加网络指示器 activityIV = [[UIActivityIndicatorVi ...

  5. vue自定义select组件

    1.目的 看了很多element-ui的源码,决定自己实现一个简单的select组件,遇到的几个难点,便记录下来. 2.难点一 element-ui中的select组件通过v-model可以绑定数据, ...

  6. BZOJ 3336 Black and White (插头DP)

    题目大意: 给你一个n×m的网格,有一些格子已经被涂上了白色或者黑色,让你用黑色或白色填剩下的格子,且填好的网格必须保证: 1.对于任意2×2的子矩阵的4个格子,它们的颜色不能都相同 2.所有黑色的块 ...

  7. 小学生都能学会的python(深浅拷贝)

    小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...

  8. [luogu] P3210 [HNOI2010]取石头游戏(贪心)

    P3210 [HNOI2010]取石头游戏 题目描述 A 公司正在举办一个智力双人游戏比赛----取石子游戏,游戏的获胜者将会获得 A 公司提供的丰厚奖金,因此吸引了来自全国各地的许多聪明的选手前来参 ...

  9. ASP.NET-DropDownListFor绑定model数据

    在ASP.NET中,DropDownListFor绑定model数据比用html的select方便太多了,配合listmode这种模型集合就可以在controller里面直接foreach循环处理li ...

  10. 记一次在BroadcastReceiver或Service里弹窗的“完美”实践

    事情是这样的,目前在做一个医疗项目,需要定时在某个时间段比如午休时间和晚上让我们的App休眠,那么这个时候在休眠时间段如果用户按了电源键点亮屏幕了,我们就需要弹出一个全屏的窗口去做一个人性化的提示,“ ...