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项目搭建的更多相关文章

  1. (转)windows环境vue+webpack项目搭建

    首先,vue.js是一种前端框架,一般利用vue创建项目是要搭配webpack项目构建工具的,而webpack在执行打包压缩的时候是依赖node.js的环境的,所以,要进行vue项目的开发,我们首先要 ...

  2. vue-cli2.0+webpack 项目搭建

    一:准备工作 安装nodejs + 安装webpack + 配置环境变量 => 确保在dos界面的任何路径都都可直接使用命令 二:搭建项目 1.全局安装vue脚手架  [DOS界面] npm i ...

  3. Angular2 + Webpack项目搭建Demo

    本文将从头开始编写实际的代码来完成一个angular2的demo. 题外话是其实angular2官网的快速开始项目已经很酷炫了,但其侧重快速二字,只够拿来练习玩耍,倒是github上确实已经有了一些不 ...

  4. 搭建自己的Webpack项目

    五,搭建自己的Webpack项目  https://www.jianshu.com/p/42e11515c10f

  5. webpack 4 :从0配置到项目搭建

    webpack4发布以来,我写项目都是用脚手架,即使再简单的项目,真的是really shame..虽然道听途说了很多 webpack4 的特性,却没有尝试过,因为它给人的感觉就是,em...很难.但 ...

  6. vue+webpack+npm搭建的纯前端项目

    转载来源:https://www.cnblogs.com/shenyf/p/8341641.html 搭建node环境 下载 1.进入node.js官方网站下载页,点击下图中框出位置,进行下载即可,当 ...

  7. 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)

    摘要:随着前端技术的飞速发展,越来越多的技术领域开始被前端工程师踏足.从NodeJs问世至今,各种前端工具脚手架.服务端框架层出不穷,“全栈工程师”对于前端开发者来说,再也不只是说说而已.在NodeJ ...

  8. 【原创】从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(二)

    摘要:上篇文章说到了如何新建工程,并启动一个最简单的Electron应用.“跑起来”了Electron,那就接着把Vue“跑起来”吧.有一点需要说明的是,webpack是贯穿这个系列始终的,我也是本着 ...

  9. vue+webpack项目环境搭建

    首先安装node.js 下载地址:https://nodejs.org/en/download/ 看下是否成功安装 node -v 安装webpack,命令行npm install webpack - ...

随机推荐

  1. Gradle 打可执行jar包

    初次使用Gradle,想和maven一样,把gradle项目打成可执行jar包,具体步骤: 1.下载gradle 版本,并配置环境变量, 下载地址:https://gradle.org/release ...

  2. MYSQL 优化器 源码解析

    http://www.unofficialmysqlguide.com/introduction.html https://dev.mysql.com/doc/refman/8.0/en/explai ...

  3. XSS跨站脚本小结(转)

    原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的 ...

  4. mongodb常用查询语法

    一.查询 find方法 db.collection_name.find(); 查询所有的结果: select * from users; db.users.find(); 指定返回那些列(键): se ...

  5. [Z] C#程序中设置全局代理(Global Proxy)

    https://www.cnblogs.com/Javi/p/7274268.html 1. HttpWebRequest类的Proxy属性,只要设置了该属性就能够使用代理了,如下: 1        ...

  6. lua 中protobuf repeated 嵌套类 复合类型

    PB基础知识科普 syntax = "proto2"; package PB; message Item { required string name = ; } message ...

  7. Java 8 时间日期

    啦啦啦 package lime.java1_8.time; import java.time.*; import java.time.format.DateTimeFormatter; import ...

  8. react项目,build以后启动问题

    用脚手架create-react-app创建的react项目,已经集成了webpack,只要运行命令:npm run build 项目就会编译成功,生成一个build文件夹,现在问题来了,如何启动这个 ...

  9. miniprogrampatch 提供 watch 和 computed 特性

    推荐一个小程序补丁 github:miniprogrampatch,为你的 Page 和 Component 增加 watch 和 computed 特性. 安装 通过 npm 安装:npm inst ...

  10. windows 驱动开发 MDL 内核层 用户层共享内存

    参考资料 https://blog.csdn.net/wdykanq/article/details/7752909 http://blog.51cto.com/laokaddk/404584 内核层 ...