我的webpack学习笔记(一)
前言
在上一篇文章中我介绍了学习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学习笔记(一)相关推荐
- webpack学习笔记1
webpack学习笔记1:基本概念 前言: 现在在日常的开发中,webpack已经是必不可少的东西了,现在的需求基本都是用webpack对资源进行打包整合,所以打算写一点关于webpack的东西,这是 ...
- webpack学习笔记(三):监听文件变化并编译
在上一篇webpack学习笔记中主要认识了webpack配置文件中相关的基础配置和命令的执行.这次学习如何在文件发生变化时自动打包编译. 首先,我们来看一下配置文件 const path = requ ...
- webpack学习笔记(二):认识配置和命令执行
在上一篇webpack学习笔记中,直接在命令行中使用npx webpack对项目进行打包时所使用的配置都是默认的,入口文件默认是src目录下的index.js文件,输出文件默认是dist文件夹下的ma ...
- webpack学习笔记(一):认识webpack
初识webpack 根据官网介绍, webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具.当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图 ...
- webpack学习笔记
看这篇文章的学习总结. webpack工作流程: 1. 配置entry,output. output的配置要注意pubilcPath这个属性,这个属性指明在浏览器中如何加载生成的打包文件.这个属性在加 ...
- webpack学习笔记(六):图片打包处理
本片文章将记录webpack中如何处理图片的打包问题.在介绍图片打包处理之前,先说明一下引入图片的三种方式: 使用背景图片:将一个包裹图片的元素的css中的background属性设置为图片路径 使用 ...
- 我的webpack学习笔记(二)
前言 上一篇文章我们讲了多页面js的打包,本篇文章我们继续scss的打包. 多页面css单独打包 首先,我们css编写采用的是sass,所以我们先来安装sass-loader以及可以用到的依赖 $ n ...
- webpack学习笔记 (三) webpack-dev-server插件和HotModuleReplacementPlugin插件使用
webpack-dev-server插件 webpack-dev-server是webpack官方提供的一个小型Express服务器.使用它可以为webpack打包生成的资源文件提供web服务. we ...
- webpack学习笔记--安装
1 首先要安装node Node.js 自带了软件包管理器 npm,Webpack 需要 Node.js v0.6 以上支持 2 npm install webpack -g 通常我们会将 Webp ...
- Webpack学习笔记(官网教程)
参考资料:webpack官方指南 GitHub源码:https://github.com/GYQ-LQ/quinn-webpack-demo demo01 安装&起步 (GitHub) 安装 ...
最新文章
- 解决[[NSFileManager defaultManager] contentsOfDirectoryAtPath 方法获取不到数据的bug
- 安全测试-抓包工具BurpSuite
- 四种解法——求子序列的最大连续子序和(普通解法、求和解法、分治法、O(n)级解法)(面试经典题)
- Android的启动模式(上)
- 聊一聊你了解的程序猿是什么样的?
- SSD1306 OLED驱动芯片 详细介绍(使用I2C)
- k8s 部署spring cloud项目
- r语言和python语法对比_R语言和Python区别对比,你会选择哪一个?
- [转帖]方正数码发布基于龙芯3A3000系列整机
- CAJViewer安装报错卸载报错打开报错解决流程
- 除了Google还有什么搜索引擎?
- CMake 常用方法
- java计算机毕业设计公立医院绩效考核系统源码+mysql数据库+系统+lw文档+部署
- HTML中屏蔽Enter键
- 大数据的产业链分析,大数据完整的产业链构成
- Elastic: ILM与rollover的关系
- 五个经典故事讲述人脉经营全攻略
- java生成矢量条形码二维码
- Windows 下常用盗版软件的替代免费软件列表
- abe.jar工具的安装
热门文章
- 微信小程序:最新微信登录授权并获取openid等信息
- goLang断言简单使用
- win10系统下Consul持久化
- PHP可变变量($$)
- exception(359): error C2220: 警告被视为错误 - 没有生成“object”文件
- 大哥吾博文写得清清楚楚,怎么就不试一下?
- WORD中输入已知编码的特殊字符
- configure: line syntax error near unexpected token `win32-dll'
- 编译FREETYPE:VS2010错误MSB8008
- 个人认为,载人登陆火星技术上无法实现