webpack 小demo
1 安装node.js
2 安装cnpm
3 安装webpack
cnpm install --save-dev webpack
对于大多数项目,我们建议本地安装。这可以使我们在引入破坏式变更的依赖时,更容易分别升级项目。
安装最新版本的webpack
cnpm install --save-dev webpack@<version>
全局安装
cnpm install --global webpack
4 初始化npm 生成package.json文件
cnpm init
5 设置配置文件webpack.config.js (import 和module.exports不能同时使用 import 可以和exports一起使用 module.exports和require一起使用)
var path = require('path');//定义了一些文件夹的路径
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.resolve(ROOT_PATH, 'src');
var BUILD_PATH = path.resolve(ROOT_PATH, 'dist');
module.exports={
devtool:'eval-source-map',
entry:APP_PATH,
output:{
path:BUILD_PATH,
filename:'main.js'
}
}
项目目录:
webpack-demo
|- package.json
|- webpack.config.js
|- /dist
|- index.html
|-main.js
|- /src
|- index.js
|- tool.js
6 定义方法 tool.js
var $=require('jquery'); (安装jquery插件 cnpm install --save-dev jquery) function demo1(){ console.log('this is function demo1'); } function demo2(){ console.log('this is function demo2'); } function demo3(){ console.log($('body')); } module.exports={ demo1:demo1, demo2:demo2 }
6 引入tool.js中的方法 index.js
var demo=require('./tool.js'); demo.demo1();
demo.demo2();
demo.demo3();
7 index.html
<!doctype html>
<html>
<head>
<title>Getting Started</title>
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>
8 执行构建
8.1 如果没有设置配置文件webpack.config.js需要根据文件的目录自己设置编译的文件以及生成文件 webpack src/index.js dist/bundle.js
8.2 设置了配置文件webpack.config.js 只需要执行webpack就可以了;这条命令会自动引用webpack.config.js
文件中的配置选项
运行结果:
8.3 更便捷的执行打包任务
在命令行中输入命令需要代码类似于 node_modules/.bin/webpack 这样的路径其实是很烦人的,不过值得庆幸的是npm可以引导任务执行,对npm进行进行配置后可以在命令行中使用简单的npm start命令来替代尚明略微繁琐的命令。在pachage.json中对scripts队形进行相关设置即可,设置方法如下:
"scripts": {
"start": "webpack" // 修改的是这里,JSON文件不支持注释,引用时请清除
},
(试了一下webpack需要全局安装才可以) Webpack的强大功能
生成Sourse Maps(使调试更容易)
devtool:'eval-source-map'//在module.exports中设置 使用webpack构建本地服务器
Webpack提供一个可选的本地开发服务器,这个本地服务器基于node.js构建,可以实现你想的这些功能,不过它是一个单独的组件,在webpack中进行配置之前需要
单独安装它作为项目依赖
cnpm install --save-dev webpack-dev-sever
实际操作中需要全局安装webpack-dev-server 才可以
修改webpack.config.js,在module.exports中添加配置:
plugins:[
new webapck.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
historyApiFallback:true,
inline:true
}
最终webpack.config.js的配置如下:
var path = require('path');
var webpack=require('webpack');
var HtmlwebpackPlugin = require('html-webpack-plugin');
//定义了一些文件夹的路径
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.resolve(ROOT_PATH, 'src');
var BUILD_PATH = path.resolve(ROOT_PATH, 'dist');
module.exports={
devtool:'eval-source-map',
entry:APP_PATH,
output:{
path:BUILD_PATH,
filename:'main.js'
},
plugins: [
/*new HtmlwebpackPlugin({
title: 'Hello World app'
}),*///在build目录下自动生成index.html,指定其title
new webpack.HotModuleReplacementPlugin()
],
devServer:{
contentBase:'./dist',
historyApiFallback: true,
inline: true
}
}
在终端输入:webpack-dev-server 构建本地服务器并执行热加载 配置script,修改package.json文件 "scripts":{
...
"server":"webpack-dev-server -inline"
}
在终端执行npm run server 就可以了、 如果局部安装webpack 和webpack-dev-server
在终端输入的命令分别是:
node_modules/.bin/webpack
node_modules/.bin/webpack-dev-server
配置script:修改package.json文件
"scripts":{
...
"start":"node_modules/.bin/webpack",
"server":"node_modules/.bin/webpack-dev-server --inline"
}
webpack 小demo的更多相关文章
- 一个基于ES6+webpack的vue小demo
上一篇文章<一个基于ES5的vue小demo>我们讲了如何用ES5,vue-router做一个小demo,接下来我们来把它变成基于ES6+webpack的demo. 一.环境搭建及代码转换 ...
- npm安装及webpack打包小demo
node(node.js) 安装 1.先从https://segmentfault.com/a/1190000004245357网站下载x64位的安装包node-v4.8.1-linux-x64.ta ...
- 一个基于ES5的vue小demo
由于现在很多vue项目都是基于ES6开发的,而我学vue的时候大多是看vue官网的API,是基于ES5的,所以对于刚接触项目的我来说要转变为项目的模块化写法确实有些挑战.因此,我打算先做一个基于ES5 ...
- SpringBoot-Vue实现增删改查及分页小DEMO
前言 主要通过后端 Spring Boot 技术和前端 Vue 技术来简单开发一个demo,实现增删改查.分页功能以及了解Springboot搭配vue完成前后端分离项目的开发流程. 开发栈 前端 开 ...
- 新手 gulp+ seajs 小demo
首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...
- Nancy之基于Nancy.Hosting.Self的小Demo
继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...
- Nancy之基于Nancy.Owin的小Demo
前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo 今天我们来做个基于Nancy.Owin的小Demo 开始之前我们来说说什么是Owin和Katan ...
- Nancy之基于Self Hosting的补充小Demo
前面把Hosting Nancy with ASP.NET.Self Hosting Nancy和Hosting Nancy with OWIN 以demo的形式简单描述了一下. 这篇是为Self H ...
- [Unity3D]做个小Demo学习Input.touches
[Unity3D]做个小Demo学习Input.touches 学不如做,下面用一个简单的Demo展示的Input.touches各项字段,有图有真相. 本项目已发布到Github,地址在(https ...
随机推荐
- 文本聚类——Kmeans
上两篇文章分别用朴素贝叶斯算法和KNN算法对newgroup文本进行了分类測试.本文使用Kmeans算法对文本进行聚类. 1.文本预处理 文本预处理在前面两本文章中已经介绍,此处(略). 2.文本向量 ...
- 程序员必备字体Source Code Pro
最近捕获一枚,程序员专用字体,很不错. 介绍如下: Source Code Pro 是由大名鼎鼎的 Adobe 公司发布的一款开源免费的等宽编程字体,它非常适合用于显示代码,支持 Linux.Mac ...
- 配置Office Outlook 2013
导航 背景——配置过程——错误(Error)——参考资料 背景 最近,折腾了一阵子邮箱客户端,包括:Foxmail.thuderbird.outlook:最后,考虑到outlook对文本的强大的支持能 ...
- Web框架Django(一)
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- Selenium系列之--05 录制脚本并导出
一.下载Firefox Firefox官方下载地址:http://www.firefox.com.cn/download/#more,下载延长支持版. 二.下载插件 Selenium本身有录制功能组件 ...
- <转>关于 error LNK2019:无法解析的外部符号 ,该符号在函数**中被引用的思考
错误提示信息摘抄如下: ---------------------------------------------------------------------------------------- ...
- 使用mark-sweep算法的垃圾回收器
在我写C++代码的那些时间里,我没有写过垃圾回收器,也没有实现过自己的内存分配器,这方面的文章倒是看了不 少.比如我在写C#代码时只管new而不需要释放,我也明白有个垃圾回收器在那帮我回收那些堆上的对 ...
- Spring源码学习(一)资源加载
这里先从最简单的一个Spring例子开始. 下面是Spring的context的配置 <?xml version="1.0" encoding="UTF-8&quo ...
- python的id()函数的一个小方面(转载)
>>> a = 2 >>> b = 2 >>> id(a) 21132060 >>> id(b) 21132060 >&g ...
- [Phoenix] 二、数据类型
目前Phoenix支持24种简单数据类型和1个一维Array的复杂类型.以下是对支持数据类型的说明: 1. INTEGER 2. UNSIGNED_INT 3. BIGINT 4. UNSIGNED_ ...