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 ...
随机推荐
- Golang Map Addressability
http://wangzhezhe.github.io/blog/2016/01/22/golangmapaddressability-dot-md/ 在golang中关于map可达性的问题(addr ...
- python(26)- 面向对象补充Ⅱ
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)判断obj是否是类 cls 的对象 class Foo(object): ...
- 【Sprint3冲刺之前】日历表的事件处理和管理(刘铸辉)
我的Sprint2冲刺——日历表的事件处理和管理(刘铸辉,刘静) 我的Sprint2冲刺计划领到的任务是和静姐结对编程,完成日历表的事件处理和管理,下面详细讲解下技术细节. 1.设计结构图 首先要画出 ...
- 内核顶层Makefile相关1
http://www.groad.net/bbs/simple/?f104.htm $(Q) 变量 内核 Makefile 文件 238 行到 259 行的注释中知道,$(Q) 变量的作用是决定是否在 ...
- Windows下利用CMake和VS2013编译OpenCV
转载自:http://www.chengxulvtu.com/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html 获取OpenCV ...
- 后端程序员看前端想死(二)进入页面之后js分析
在上一篇中分析了一下以网页的组成.header中引入的乱七八糟的东西,现在进入到js中进行分析了 tuhooo啊,你是要搞前端了么? nonono,好玩,学一下 打开页面之后执行js的几种方法 直接写 ...
- PHP获取IP
<?php $iipp = $_SERVER["REMOTE_ADDR"]; echo $iipp ; ?>
- JQuery 如何获取select选中的值
一.html代码 <select id="ddl"> <option value="100" emoney="12" &g ...
- java socket InputStream和OutputStream
从java socket对象获取的InputSteam的read方法其实是对linux的recv()函数的调用,OutputStream也同理. 也就是说,InputStream和OutputStre ...
- Error: EACCES: permission denied, mkdir '/root/.nvm/versions/node/......
当我执行npm install -g node-inspector的时候报错. 所以就去网上搜索了一下答案. 有这么几种答案.请看完再执行相关命令 有说需要在前面加上sudo命令的. 不能解决我出现的 ...