webpack项目搭建
1、新建一个文件目录,命令行进入当前目录,输入npm init 创建package.json文件
2、安装项目依赖webpack模块: npm install webpack --save-dev
3、新建如下图目录结构

4、在根目录下新建文件:webpack.config.js 并编辑如下代码:
module.exports = {
devtool: 'eval-source-map',
entry: {
main: './src/js/main.js',
home: './src/js/home.js'
},
output: {
filename: '[name].js',
path: __dirname + '/dist'
},
}
5、安装webpack脚手架(webpack-cli模块)和html-webpack-plugin 和 html-loader(多页面加载)插件:npm install webpack-cli html-webpack-plugin
继续编辑webpack.config.js文件(引入path模块)
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
devtool: 'eval-source-map',
entry: {
main: './src/js/main.js',
home: './src/js/home.js'
},
output: {
filename: 'js/[name].js',
path: __dirname + '/dist'
},
plugins: [
new HtmlWebpackPlugin({
filename : 'index.html',//入口html
template : './src/page/index.html',
minify : {
// removeComments:true, //删除注释
// collapseWhitespace: true //删除空格,压缩
},
chunks: ['main'] //对应entry的入口js.这样可以按需加载js
}),
new HtmlWebpackPlugin({
filename : 'home.html',
template : './src/page/home.html',
minify : {
// removeComments:true, //删除注释
// collapseWhitespace: true //删除空格,压缩
},
chunks: ['home']
}),
],
devServer: {
host : '127.0.0.1',
port : 8080 ,
inline : true,
open :true, //自动打开浏览器
hot : false, //慎用!打开热更新,会导致修改样式可能不支持。关闭热更新,页面会强刷
contentBase : path.join(__dirname, "dist"),
}
}
6、为了方便启动webpack,在package.json中加入代码
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"webpack": "webpack --config webpack.config.js --progress --display-modules --colors --display-reason",
"dev": "node_modules/.bin/webpack --mode development",
"start": "node_modules/.bin/webpack-dev-server --open"
},
7、使用babel-loader转化ES6代码
安装依赖:
npm install --save-dev babel-core babel-preset-es2015
npm install --save-dev babel-loader@7 /*babel-core 6的版本得安装babel-loader 7*/
编辑webpack.config.js文件
module: {
loaders: [{
test: /\.js$/,
use: 'babel-loader'
}]
}
创建babel调用的文件.babelrc
{ "presets": [ "es2015" ] }
8、css和scss的处理模块
安装依赖
npm install style-loader css-loader sass-loader
//因为sass-loader依赖于node-sass,所以还要安装node-sass
npm install --save-dev node-sass
编辑webpack.config.js文件
module: {
rules: [{
test: /\.js$/,
use: ['babel-loader']
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
}
]
},
9、图片处理模块
安装依赖
npm install url-loader image-webpack-loader --save-dev
编辑webpack.config.js文件
{
test: /\.(png|jpg|gif|svg)$/, use: [
{
loader: 'url-loader', //此处使用url-loader可进行base64,使用file-loader不能
options: {
limit: 20000,
name: 'image/[name]-[hash:5].[ext]',
}
},
{ loader: 'image-webpack-loader' } //image-webpack-loader 的作用是对图片进行压缩
]
},
注意:在html 引用图片使用以下方式
<img src="${require('../image/3.jpg')}" alt="">
10、出现webpack-dev-server报错,删除node_modules模块,在运行npm install
11、完整代码参考
webpack.config.js
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
devtool: 'eval-source-map',
entry: {
main: './src/js/main.js',
home: './src/js/home.js'
},
output: {
filename: 'js/[name].js',
path: __dirname + '/dist'
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',//入口html
template: './src/page/index.html',
minify: {
// removeComments:true, //删除注释
// collapseWhitespace: true //删除空格,压缩
},
chunks: ['main'] //对应entry的入口js.这样可以按需加载js
}),
new HtmlWebpackPlugin({
filename: 'home.html',
template: './src/page/home.html',
minify: {
// removeComments:true, //删除注释
// collapseWhitespace: true //删除空格,压缩
},
chunks: ['home']
}),
],
module: {
rules: [{
test: /\.js$/,
use: ['babel-loader']
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader']
},
{
test: /\.(png|jpg|gif|svg)$/, use: [
{
loader: 'url-loader', //此处使用url-loader可进行base64,使用file-loader不能
options: {
limit: 20000,
name: 'image/[name].[ext]',
}
},
{ loader: 'image-webpack-loader' } //image-webpack-loader 的作用是对图片进行压缩
]
},
]
},
devServer: {
host: '127.0.0.1',
port: 8080,
inline: true,
open: true, //自动打开浏览器
hot: false, //慎用!打开热更新,会导致修改样式可能不支持。关闭热更新,页面会强刷
contentBase: path.join(__dirname, "dist"),
}
}
11、完整项目:https://github.com/huangguohua96/webpack.git
webpack项目搭建的更多相关文章
- (转)windows环境vue+webpack项目搭建
首先,vue.js是一种前端框架,一般利用vue创建项目是要搭配webpack项目构建工具的,而webpack在执行打包压缩的时候是依赖node.js的环境的,所以,要进行vue项目的开发,我们首先要 ...
- vue-cli2.0+webpack 项目搭建
一:准备工作 安装nodejs + 安装webpack + 配置环境变量 => 确保在dos界面的任何路径都都可直接使用命令 二:搭建项目 1.全局安装vue脚手架 [DOS界面] npm i ...
- Angular2 + Webpack项目搭建Demo
本文将从头开始编写实际的代码来完成一个angular2的demo. 题外话是其实angular2官网的快速开始项目已经很酷炫了,但其侧重快速二字,只够拿来练习玩耍,倒是github上确实已经有了一些不 ...
- 搭建自己的Webpack项目
五,搭建自己的Webpack项目 https://www.jianshu.com/p/42e11515c10f
- webpack 4 :从0配置到项目搭建
webpack4发布以来,我写项目都是用脚手架,即使再简单的项目,真的是really shame..虽然道听途说了很多 webpack4 的特性,却没有尝试过,因为它给人的感觉就是,em...很难.但 ...
- vue+webpack+npm搭建的纯前端项目
转载来源:https://www.cnblogs.com/shenyf/p/8341641.html 搭建node环境 下载 1.进入node.js官方网站下载页,点击下图中框出位置,进行下载即可,当 ...
- 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)
摘要:随着前端技术的飞速发展,越来越多的技术领域开始被前端工程师踏足.从NodeJs问世至今,各种前端工具脚手架.服务端框架层出不穷,“全栈工程师”对于前端开发者来说,再也不只是说说而已.在NodeJ ...
- 【原创】从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(二)
摘要:上篇文章说到了如何新建工程,并启动一个最简单的Electron应用.“跑起来”了Electron,那就接着把Vue“跑起来”吧.有一点需要说明的是,webpack是贯穿这个系列始终的,我也是本着 ...
- vue+webpack项目环境搭建
首先安装node.js 下载地址:https://nodejs.org/en/download/ 看下是否成功安装 node -v 安装webpack,命令行npm install webpack - ...
随机推荐
- CentOS 6.5 x64下查找依赖包,或用YUM安装
查看某个命令YUM上的安装源 1)当某个命令不存时进行查询所依赖的包,如:pstree [root@localhost ~]# yum provides pstree 已加载插件:fastestmir ...
- chrome浏览器解决跨域问题
windows: 右击chrome图标 选择属性 快捷方式 在目标末尾位置,空格,输入--args --disable-web-security --user-data-dir 例如:"C: ...
- Android开发导出apk报错:Unable to build: the file dx.jar was not loaded from the SDK folder
问题背景 此问题一般出现在,同时使用了Eclipse和Android Studio,eclipse是不会去下载最新的Android的相关tools,但是studio有时候会自动更新最新的build-t ...
- IOS逆向-砸壳笔记
本人ios10.3.1 iphone6越狱机.方案三个. 方案一.dumpdecrypted.dylib 1. ssh到越狱机上,看WeChat可执行文件在哪. # ps aux|grep WeCha ...
- 学习:ups电池放电时间是怎么计算的?
例如现有20KVA的UPS一台,负载功率为8000W,电池节数为64节,容量为32AH,电池电压为12V,那么UPS电源的放电时间计算方法如下: 负载功率*放电时长=电池放电量*电池电压*逆变率 80 ...
- 如何将本地项目上传至GitHub(so easy!!!)
如何将本地项目上传至GitHub 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直 ...
- python一个简单的websocket测试客户端
朋友发的,之前在网上一直没找着,先记着 #!/usr/bin/env python import asyncio import websockets import json async def tes ...
- 视频编码---mjpeg
http://www.eepw.com.cn/article/201612/333063.htm https://www.cnblogs.com/ikaka/p/4860858.html https: ...
- dedecms wap 上一篇 下一篇 链接出错
打开 \include\arc.archives.class.php 文件 大约在839 行,查找 $mlink = 'view.php?aid='.$preRow['id']; 修改 ...
- linux中,history命令,显示时间戳?操作人?IP地址?
需求描述: 在linux环境中,有的时候为了审计的需要,要记录谁什么时间从什么IP登录,执行了什么命令,bash的history命令就能够记录这些信息,但是在默认的情况下,是不记录时间的,所以呢,在这 ...