前言

在上一篇文章中我介绍了学习webpack前的准备工作,下面开始webpack的学习。

*创建webpack-demo文件夹
$ mkdir webpack-demo
$ cd webpack-demo
*初始化一份package.json
$ npm init -y
*package.json内容
{"name": "webpack-demo",//项目文件夹名字"version": "1.0.0",//项目版本号"description": "",//项目的简介"main": "index.js","scripts": {//可以通过npm执行的命令 npm run test"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "",//作者"license": "ISC"
}

请关注package.json的内容在之后的学习中的变化

目标

一般我们接触到的关于webpack的文章,都是以解读webpack官方文档为主,而且是针对单页面项目的应用。我先在假设要做一个多页面应用,该如何去通过webpack打包js、css。

假设js编写采用的是es6语法,样式采用scss,图标采用iconfont和小图片,页面假设是html(实际可能是php或者jsp等)

项目目录如下

打包思路,在src目录下面创建dist文件夹,我们会根据不同页面功能打包成独立文件夹,其中包含对应的js和css

如下图

多页面应用js打包

webpack安装
$ npm install webpack --save-dev

# package.json中会出现下面属性"devDependencies": {"webpack": "^3.2.0"}

babel安装 (因为我们采用的是es6语法,所以需要通过babel来把代码转换成es5代码,从而在现有环境中执行。)
$ npm install babel-loader --save-dev
$ npm install babel-core babel-preset-es2015 --save-dev
创建.babelrc文件并添加代码 { "presets": ["es2015"] }

*在webpack.config.js中添加babel-loaders
module: {loaders: [{test: /\.js/,loader: 'babel',include: __dirname + '/src',}],
}

package.json

{"name": "webpack-demo","version": "1.0.0","description": "my first webpack demo","scripts": {"dev": "webpack"},"author": "sun","engines": {"node": ">= 4.0.0","npm": ">= 3.0.0"},"devDependencies": {"babel-core": "^6.25.0","babel-loader": "^7.1.1","babel-preset-es2015": "^6.24.1","webpack": "^3.2.0"},"repository": {"type": "git","url": "https://github.com/xxxxxx(你的git名)/webpack-demo.git"}
}

webpack.config.js

const path = require('path')
const webpack = require('webpack') //to access built-in plugins
const fs = require('fs')
function getEntry() {var jsPath = path.resolve(__dirname, 'src/js/app')var dirs = fs.readdirSync(jsPath)var matchs = [], files = {}dirs.forEach(function (item) {matchs = item.match(/(.+)\.js$/);if (matchs) {files[matchs[1]] = path.resolve(__dirname, 'src/js/app', item)}})return files
}
module.exports = {entry: getEntry(),output: {path: path.join(__dirname, "src/dist"), //文件输出目录publicPath: "src/dist",        //用于配置文件发布路径,如CDN或本地服务器filename: "[name]/[name].js",        //根据入口文件输出的对应多个文件名},module: {loaders: [{test: /\.js/,loader: 'babel-loader',include: __dirname + '/src/js'//include设置只转码src/js下的js文件,不希望被转码的第三方js库可以放在该目录外}]}
}

下面我们开始打包js代码

$ npm run dev- 执行后src/js/app下面的所有js会被分别打包到/src/js/dist下面,并且保持文件名不变,你会发现此时打包后的js不是压缩后的代码,如果需要压缩代码,需要在webpack.config.js中加入:
plugins: [//js文件的压缩new webpack.optimize.UglifyJsPlugin({compress: {warnings: false}})
]

下一章学习多页面scss打包

我的webpack学习笔记(一)相关推荐

  1. webpack学习笔记1

    webpack学习笔记1:基本概念 前言: 现在在日常的开发中,webpack已经是必不可少的东西了,现在的需求基本都是用webpack对资源进行打包整合,所以打算写一点关于webpack的东西,这是 ...

  2. webpack学习笔记(三):监听文件变化并编译

    在上一篇webpack学习笔记中主要认识了webpack配置文件中相关的基础配置和命令的执行.这次学习如何在文件发生变化时自动打包编译. 首先,我们来看一下配置文件 const path = requ ...

  3. webpack学习笔记(二):认识配置和命令执行

    在上一篇webpack学习笔记中,直接在命令行中使用npx webpack对项目进行打包时所使用的配置都是默认的,入口文件默认是src目录下的index.js文件,输出文件默认是dist文件夹下的ma ...

  4. webpack学习笔记(一):认识webpack

    初识webpack 根据官网介绍, webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具.当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图 ...

  5. webpack学习笔记

    看这篇文章的学习总结. webpack工作流程: 1. 配置entry,output. output的配置要注意pubilcPath这个属性,这个属性指明在浏览器中如何加载生成的打包文件.这个属性在加 ...

  6. webpack学习笔记(六):图片打包处理

    本片文章将记录webpack中如何处理图片的打包问题.在介绍图片打包处理之前,先说明一下引入图片的三种方式: 使用背景图片:将一个包裹图片的元素的css中的background属性设置为图片路径 使用 ...

  7. 我的webpack学习笔记(二)

    前言 上一篇文章我们讲了多页面js的打包,本篇文章我们继续scss的打包. 多页面css单独打包 首先,我们css编写采用的是sass,所以我们先来安装sass-loader以及可以用到的依赖 $ n ...

  8. webpack学习笔记 (三) webpack-dev-server插件和HotModuleReplacementPlugin插件使用

    webpack-dev-server插件 webpack-dev-server是webpack官方提供的一个小型Express服务器.使用它可以为webpack打包生成的资源文件提供web服务. we ...

  9. webpack学习笔记--安装

    1 首先要安装node  Node.js 自带了软件包管理器 npm,Webpack 需要 Node.js v0.6 以上支持 2 npm install webpack -g 通常我们会将 Webp ...

  10. Webpack学习笔记(官网教程)

    参考资料:webpack官方指南 GitHub源码:https://github.com/GYQ-LQ/quinn-webpack-demo demo01 安装&起步 (GitHub) 安装 ...

最新文章

  1. 解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug
  2. 安全测试-抓包工具BurpSuite
  3. 四种解法——求子序列的最大连续子序和(普通解法、求和解法、分治法、O(n)级解法)(面试经典题)
  4. Android的启动模式(上)
  5. 聊一聊你了解的程序猿是什么样的?
  6. SSD1306 OLED驱动芯片 详细介绍(使用I2C)
  7. k8s 部署spring cloud项目
  8. r语言和python语法对比_R语言和Python区别对比,你会选择哪一个?
  9. [转帖]方正数码发布基于龙芯3A3000系列整机
  10. CAJViewer安装报错卸载报错打开报错解决流程
  11. 除了Google还有什么搜索引擎?
  12. CMake 常用方法
  13. java计算机毕业设计公立医院绩效考核系统源码+mysql数据库+系统+lw文档+部署
  14. HTML中屏蔽Enter键
  15. 大数据的产业链分析,大数据完整的产业链构成
  16. Elastic: ILM与rollover的关系
  17. 五个经典故事讲述人脉经营全攻略
  18. java生成矢量条形码二维码
  19. Windows 下常用盗版软件的替代免费软件列表
  20. abe.jar工具的安装

热门文章

  1. 微信小程序:最新微信登录授权并获取openid等信息
  2. goLang断言简单使用
  3. win10系统下Consul持久化
  4. PHP可变变量($$)
  5. exception(359): error C2220: 警告被视为错误 - 没有生成“object”文件
  6. 大哥吾博文写得清清楚楚,怎么就不试一下?
  7. WORD中输入已知编码的特殊字符
  8. configure: line syntax error near unexpected token `win32-dll'
  9. 编译FREETYPE:VS2010错误MSB8008
  10. 个人认为,载人登陆火星技术上无法实现