篇仅演示 webpack 的基础搭建,为入门和走通基本流程而写。仅 window 系统。

1. 安装一些东西

安装 nodeJS,下载链接。然后检查安装是否完成。

系统“开始”和“R”键同时按住,桌面右下角出现运行界面,输入 cmd 回车或点击确定。

然后会出现黑色的系统调试器。分别输入以下两行内容,观察已安装程序的版本好。

2. 全局安装 cnpm 和 webpack

使用 cnpm 比 npm 下载更快一些,在该系统调试器中继续输入 npm install -g cnpm。等待此过程完成。

接着输入 npm install -g webpack。等待此过程完成。花花绿绿很大一片(就不贴图了)。

再接着输入 webpack -v 查看版本号,检查是否安装完成。

3. 新建项目文件夹

找个你喜欢的地方新建一个空文件夹,复制其磁盘地址。

然后在系统调试器中输入 cd /d [dirname]。如下:

接着输入 npm init。如果始终中途中断,可输入 npm init -y。一路按回车直到结束。

如果上两种方法都走不通,那就自己手写新建一个 package.json 吧,里面的代码如下。

{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

再在系统调试器中输入 cnpm install --save-dev webpack。等待此过程结束。

此时的文件管理器中则形成了如此的目录结构。

如果 webpac.config.js 未出现,那又得你手写新建了。代码如下:

'use strict';

var path = require('path');
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.resolve(ROOT_PATH, 'app');
var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); module.exports = {
entry: APP_PATH,
output: {
path: BUILD_PATH,
filename: 'bundle.js'
},
};

其中 app 和 build 分别为 webpack 的输入路径(要压缩等操作的文件)和输出路径(已压缩等着上线的文件),bundle.js 为最终打包生成的文件,需要我们新建一下空文件夹。

之后我们再分别在该项目中添加一堆项目所需的文件,包含了 css/sass/js/json/图片等,在此仅贴出文件目录,如下。

index.html 中仅引用一个最终打包生成文件 bundle.js 就好了,它包含了 app 文件夹内的所有。

4. 安装各种 loader

比如,我想让我的 js 能支持 es6,那么就安装 babel-loader 和 babel-core。在系统调试器中输入:

cnpm install --save-dev babel-loader babel-core

比如,我项让我的 css 能加前缀,支持最新的 css3 属性和方法,那就使用 postcss-loader。在系统调试器中输入:

cnpm install --save-dev postcss-loader autoprefixer precss

但使用 postcss 还需要一个 postcss.config.js 文件,内容如下:

//  postcss.config.js
module.exports = {
plugins: [
require('precss'),
require('autoprefixer')
]
}

再比如,我想使用 sass 来写 css,那就下载 sass-loader 和 node-sass。在系统调试器中输入:

cnpm install --save-dev sass-loader node-sass

安装完这些,我们再来配置webpack.config.js,如下:

'use strict';

var path = require('path');
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.resolve(ROOT_PATH, 'app');
var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); module.exports = {
entry: APP_PATH,
output: {
path: BUILD_PATH,
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.json/,
loader: 'json-loader'
},
{
test: /\.jsx?$/,
loader: 'babel-loader',
},
{
test: /\.sass/,
loader: 'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded&indentedSyntax'
},
{
test: /\.scss/,
loader: 'style-loader!css-loader!postcss-loader!sass-loader?outputStyle=expanded',
},
{
test: /\.less/,
loader: 'style-loader!css-loader!postcss-loader!less-loader'
},
{
test: /\.css$/,
loader: 'style-loader!css-loader!postcss-loader',
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'url-loader?limit=8192'
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
loader: 'url-loader?limit=8192'
},
{
test: /\.(mp4|ogg|svg)$/,
loader: 'file-loader'
},
]
},
};

5. 运行 webpack

在系统调试器输入以下不同语句,将得到不同结果

webpack -v 为查看版本

webpack 直接进行压缩,app 文件夹的东西全部打包成 bundle.js

webpack -w 不用每次修改完都来调试器运行一次打包,每个文件的保存就会打包,在浏览器中刷新就能看到最新结果

webpack -p 生成发布版,不但打包,还压缩代码

以上即为静态文件打包的全过程,可访问本页面以获得源码。

webpack 还远不止这些,它还能设定不同的开发环境,生成到不同文件夹,不用刷新浏览器的热更新等功能,这些将在后续篇章中演示。

Webpack -- 基础篇的更多相关文章

  1. 【webpack 系列】基础篇

    Webpack 基础篇 基本概念 Webpack 是一个现代 JavaScript 应用程序的静态模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每 ...

  2. 基于vue2.x的webpack升级与项目搭建指南--基础篇

    first thing fitrst 博主声明:绝对不当标题党 有人看最好不过的背景: 十月初对公司产品的前端构建做了一些优化,但还遗留了不少问题(可了解我的前一篇博文:一次webpack小规模优化经 ...

  3. nodejs+gulp+webpack基础知识

    nodejs+gulp+webpack基础知识 2019年08月22日 11:49:40 天府云创 阅读数 22   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文 ...

  4. 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)

    背景 ​ 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. C#多线程之基础篇3

    在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...

  7. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  8. 2000条你应知的WPF小姿势 基础篇<15-21>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...

  9. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

随机推荐

  1. PMP 质量管理7张图 很形象

    PMP 质量管理 中的因果图.控制图.流程图.核查表.直方图.帕累托图.散点图

  2. [报错]Unable to simultaneously satisfy constraints

    项目中自定义Cell,控件使用autoLayout来设置约束,发现运行页面表现正常,但是控制台报如下错误: Unable to simultaneously satisfy constraints. ...

  3. Spark源码分析 – 汇总索引

    http://jerryshao.me/categories.html#architecture-ref http://blog.csdn.net/pelick/article/details/172 ...

  4. c++ socket相关

    http://blog.sina.com.cn/s/blog_43ad62c70100gtow.html,一个简单的C语言的socket服务器和客户端程序 http://www.cnblogs.com ...

  5. python学习笔记(二)— 字符串(string)

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var2 ...

  6. lua获取table的长度

    lua在获取table的size时,不能一味的使用类似于java里面的length函数 table的存储是类似hashTable的kv形式. -- table.getn(tableName) 得到一个 ...

  7. Selenium+Python学习之一

    刚入门selenium+Python,实验成功之后,记录一下过程. 首先是在知乎上面看到一个关于selenium+python的示例,于是自己便尝试搭建环境上手实验. 按照作者的代码敲一遍之后执行,竟 ...

  8. Oracle TRCA 工具(转)

    本篇文章主要介绍了"Oracle TRCA 工具 说明 ",主要涉及到Oracle TRCA 工具 说明 方面的内容,对于Oracle TRCA 工具 说明 感兴趣的同学可以参考一 ...

  9. map::erase陷阱

    map::erase函数在不同版本stl中的差异 1. C++98和C++11标准 http://www.cplusplus.com/reference/map/map/erase/ 2. pj st ...

  10. Python误区之strip,lstrip,rstrip

    最近在处理数据的时候,想把一个字符串开头的“)”符号去掉,所以使用targetStr.lstrip(")"),发现在 将处理完的数据插入到数据库时会出现编码报错,于是在网上搜到了这 ...