webpack打包原理

Webpack

一个模块打包器,将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

本身只能打包js模块,自带BGM如虎添翼(Loader转换器)【将各种类型的资源转换成js模块】

安装

$ npm intsall webpack -g

  

在项目文件中安装webpack依赖

#进入安装目录
#确定已经有package.json,没有的话就通过npm init 创建
#安装webpack依赖
$npm install webpack --save-dev

  

查看版本信息

#查看安装的版本信息
$npm info webpack
#安装稳定版本
$npm install [email protected] --save-dev

  

新建文件并使用

打包

$ webpack entry.js bundle.js

  

原理

webpack会分析每个入口文件,解析包依赖关系的各个文件,每个模块都打包到bundle.js。webpack给每个模块分配一个唯一的ID并通过这个ID索引和访问模块。页面运行时,先启动entry.js,其他模块会在运行require时候执行。

不同的模块管理工具

Bowser:给模块的安装、升级、删除提供一个统一的、可维护的管理模式

Browserify:让服务器端CommonJS 运行在浏览器端

Component:将网页所需要的所有资源(脚本、图片、样式表)编译后放在同一个目录下

Duo:站在巨人的肩膀上(拜师于Component,集Bowser和Browserify大成者),傲视群雄

Grunt

一种任务管理器(自动化任务处理工具),基于nodejs,可实现跨系统跨平台的桌面端操作。

原理:用js脚本设置任务,让工具读取这个js,解析到所要执行的任务,并调用插件完成任务。

安装:

npm install -g grunt-cli

  

package.json-----定义了项目中的数据,比如项目名,项目的依赖关系。

{
  "name": "project-nam",
  "version": "0.4.5",
  "description": "学习 grunt",
  "author": "Xingwucheng",
  "devDependencies": {
    "temporary": "~0.0.4",
    "grunt-contrib-jshint": "~0.6.4",
    "grunt-contrib-nodeunit": "~0.2.0",
    "grunt-contrib-watch": "~0.5.3",
    "difflet": "~0.2.3",
    "senver": "~2.1.0",
  }
}

Gruntfile.js -------定义和配置在Grunt中运行的任务

module.exports = function(grunt) {

  //项目配置
  grunt.initConfig({
    pkg: grunt.file.readJSON(‘package.json‘),
    uglify: {
      options: {
        banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘
      },
      build: {
        src: ‘src/<%= pkg.name %>.js‘,
        dest: ‘build/<%= pkg.name %>.min.js‘
      }
    }
  });

  //加载grunt插件
  grunt.loadNpmTasks(‘grunt-contrib-uglify‘);

  // 注册grunt默认任务.
  grunt.registerTask(‘default‘, [‘uglify‘]);

};

  

时间: 2024-10-04 15:58:43

webpack打包原理的相关文章

浅谈webpack打包原理

浅谈webpack打包原理 模块化机制 webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目.有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包,webpack会帮你处理好的. 关于模块化的一些内容,可以看看我之前的文章:js的模块化进程 核心思想: 一切皆模块: 正如js文件可以是一个"模块(module)"一样,其他的(如css.image或html)文件也可视作模 块.因此,你可以require('

[转] Webpack 打包优化之体积篇

谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝座的 Gulp, 以及独树一帜的 fis3, 以及下一代打包神器 Rollup :在 browserify,grunt,gulp,rollup,webpack 可以一窥其中部分对比.在本文要探究的是,当前打包工具绝对霸者 Webpack. Webpack Package optimization W

Webpack 打包优化之体积篇

谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝座的 Gulp, 以及独树一帜的 fis3, 以及下一代打包神器 Rollup :在 browserify,grunt,gulp,rollup,webpack 可以一窥其中部分对比.在本文要探究的是,当前打包工具绝对霸者 Webpack. Webpack Package optimization W

记一次webpack打包样式加载问题

今天是周六. 我过来加班了. 是因为一个属性问题. 俗话说一杯茶一包烟一个bug改一天 感觉这句话就是特意为我准备的(我加班的时候喝奶茶,抽烟,而且就一个bug.哈哈哈哈哈哈哈哈哈哈或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或或) 言归正传,说下webpack打包问题,刚到新工作和大佬们一起做ts + vue + vant的项目.(我之前不写ts,其实差不多,就是命名语法等问题) 我们一起撸代码,一直是在本地run serve的本地是

webpack系列--浅析webpack的原理

一.前言 现在随着前端开发的复杂度和规模越来越大,鹰不能抛开工程化来独立开发,比如:react的jsx代码必须编译后才能在浏览器中使用,比如sass和less代码浏览器是不支持的.如果摒弃这些开发框架,开发效率会大幅下降. 在众多前端工程化工具中,webpack脱颖而出成为了当今最流行的前端构建工具. 二.webpack的原理 知其然知其所以然. 1.核心概念 (1)entry:一个可执行模块或者库的入口. (2)chunk:多个文件组成一个代码块.可以将可执行的模块和他所依赖的模块组合成一个c

webpack打包体积优化

webpack打包的体积越小,对于部署应用的网站来说,性能越好,加载速度越快. 1. 分析打包文件 1. 生成统计信息文件 首先需要通过webpack命令生成统计信息的文件.在package.json的脚本中添加命令 "scripts": { "stats": "webpack --config webpack.prod.js --profile --json > stats.json", //... } 上面的命令会在根目录下生成一个st

webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc &#171;(&#187;, expected punc &#171;:&#187;

webpack打包压缩 ES6 js..vue报错: ERROR in js/test.js from UglifyJs Unexpected token punc ?(?, expected punc ?:? [js/test.js:1374,5] 解决方案: 配置babel,把配置放到文件[.babelrc]中 { "presets": ["es2015"] }

webpack打包css

1.第一种方式 1.安装css-loader和style-loader $ cnpm install css-loader style-loader --save-dev 2.引用的时候使用css-loader,让webpack可以打包css文件 require('css-loader!./style.css'); 3.打包 4.引入style-loader,将样式通过style标签写到head标签里 require('style-loader!css-loader!./style.css');

初试webpack打包

第一次接触webpack,学习了如何用webpack打包,记录一下过程. 1.在项目根目录安装webpack $ npm install webpack --save-dev 2.新建一个webpack.config.js 3.根据需要安装需要的加载器,并在webpack.config.js的module中进行配置,例如加载babel. $ npm install babel-loader --save-dev webpack.config.js文件 var webpack = require(