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 ...
随机推荐
- js改变css样式
CreateTime--2017年10月31日15:14:12 Author:Marydon js改变css样式 1.js改变单个css样式 HTML部分 <div id="tes ...
- shell(2):正则表达式
一.整理正则表达式博客 (1)正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在linux中,通配符是由shel ...
- POJ1830开关问题——gauss消元
题目链接 分析: 第一个高斯消元题目,操作是异或.奇偶能够用0.1来表示,也就表示成bool类型的方程,操作是异或.和加法没有差别 题目中有两个未知量:每一个开关被按下的次数(0.1).每一个开关的转 ...
- JavaSE 文件递归之删除&获取文件夹文件夹中全部的以.jpg的文件的绝对路径
1.递归删除文件 假设一个文件夹以下还有子文件夹,进行删除的话会 报错,这个时候要使用递归的方式来删除这个文件文件夹中的全部文件以及文件夹 package cn.itcast.digui; impor ...
- 循序渐进学Python2变量与输入
新建一个test.py文件,右键选择“Edit with IDLE”,编辑完成后,Ctrl+S保存,然后按下F5就可以执行代码了. 注:IDLE是Python官方提供的一个IDE工具. 目录 [隐藏] ...
- java UUID的解析与应用(转载)
原文链接:http://www.blogjava.net/feelyou/archive/2008/10/14/234320.html 讨论UUID的定义.分类.应用及生成工具. 什么是UUID? U ...
- EasyDarwin手机直播是如何实现的快速显示视频的方法
前言 经常有人提到最近比较火的映客直播.花椒直播这种,是如何做到在打开手机直播中的某一个主播房间后,立即就能显示出主播视频,非常非常快,而且延时也比较小,是怎么做到的? 其实,这并不是什么高深的技术, ...
- 2018.11.23-day27 面向对象(大总结)
1. 2个内置函数 2.反射 3.内置方法 4.面向对象大总结 思维导图地址:https://www.processon.com/view/link/5bfcfd62e4b0ef094cbf04a7 ...
- java object monitor
1 什么是java object monitor 每个java对象头中都有锁状态位标记.java中在使用synchronize同步的时候,肯定是涉及到某个对象的锁.因此,在考虑同步的时候,首先要想到是 ...
- java中两字符串比较--compareTo方法
java.lang.String.compareTo() 方法比较两个字符串的字典,比较是基于字符串中的每个字符的Unicode值 String n1 = "1"; String ...