Webpack快速入门

什么是Webpack

顾名思义它是一个前端打包工具,通过给定的入口文件自动梳理所有依赖资源(包括css、图片、js等),并按照配置的规则进行一系列处理(转es5、压缩等),打包生成适合现代生产环境要求的文件。同时也借此竖起技术壁垒,防止后端改代码[滑稽]。

npm基本操作

现今前端体系构建在node之上,npm是node的包管理器。webpack、babel等只是工具包,都通过npm安装。

初始化新项目
npm init
全局安装依赖包PACKAGE,不属于具体哪个项目
npm install --global PACKAGE
安装运行时依赖包PACKAGE,会打包至最终生成文件
npm install --save PACKAGE
安装开发时依赖包PACKAGE,不会出现在生成文件中。webpack就属于开发时用来打包文件,在运行时就不需要它了。
npm install --save-dev PACKAGE
执行命令,具体命令配置在package.json中
npm run COMMAND
同时以上安装依赖命令也有简写模式
npm i -g PACKAGE
npm i -S PACKAGE
npm i -D PACKAGE

编写源码

创建并进入项目文件夹

mkdir packme
cd packme

初始化项目

npm init
//之后根据提示输入或默认即可。

创建目录app存放源文件

mkdir app

编写源代码

//Anim.js
class Anim {
    constructor(name = ‘unnamed‘) {
        this.name = name;
    }

    speak() {
        return `hey, i am ${this.name}`;
    }
}

export default Anim;
//Sheep.js
import Anim from ‘./Anim.js‘
class Sheep extends Anim {
    constructor(name, age) {
        super(name);
        this.age = age;
    }
}

export default Sheep;
//index.js
import Sheep from ‘./Sheep.js‘;
import base from ‘./base.css‘;
import index from ‘./index.css‘;

let sheep = new Sheep(‘doly‘, 1);
let target = document.getElementById(‘logs‘);
target.innerHTML = sheep.speak();
/*base.css*/
html,
body {
    padding: 0;
    margin: 0;
    height: 100%;
}
/*index.css*/
#logs {
    border: 1px solid #ccc;
    height: 80px;
    overflow: auto;
} 
<!-- index.tpl.html -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="logs"></div>
</body>

</html>

整体项目目录如图所示

构建目标

源码编写好了,梳理一下我们的构建目标。

js使用了es6,需要转换成es5
js合并到一个文件
压缩js
css合并到一个文件
压缩css

开始构建

安装依赖包

//webpack 负责整个流程
npm i -D webpack
//babel 负责es6转换
npm i -D babel-core babel-cli babel-loader babel-preset-es2015
//压缩js
npm i -D terser-webpack-plugin
//抽取处理过的css到单独文件(默认css会被当作模块引入js中)
npm i -D mini-css-extract-plugin
//压缩css
npm i -D optimize-css-assets-webpack-plugin
//将打包后的js、css插入指定html
npm i -D html-webpack-plugin

创建webpack配置文件

//webpack.config.js
//配置文件本身是js,它交给node执行。所以可以使用模块语法、特殊变量等特性。

//声明引入插件
const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);
const MiniCssExtractPlugin = require(‘mini-css-extract-plugin‘);
const TerserJsPlugin = require(‘terser-webpack-plugin‘);
const OptimizeCssAssetsPlugin = require(‘optimize-css-assets-webpack-plugin‘);

module.exports = {
    mode: ‘production‘,//production默认会压缩代码,development则不会。
    devtool: ‘cheap-module-source-map‘,//控制生成sourceMap的方式
    entry: __dirname + ‘/app/index.js‘,//入口文件,多个入口可以对象kv方式传入
    output: {
        path: __dirname + ‘/build‘,
        filename: ‘bundle-[contenthash:8].js‘
    },
    optimization: {
        minimizer: [ //配置js、css压缩器
            new TerserJsPlugin({
                cache: true,
                parallel: true,
                sourceMap: true
            }),
            new OptimizeCssAssetsPlugin()
        ]
    },
    module: {//配置不同文件的处理规则,
        rules: [{
                test: /\.js$/,
                exclude: /node_modules/,
                loader: ‘babel-loader‘,
                query: {//指定babel使用的参数
                    presets: [‘es2015‘]
                }
            },
            {
                test: /\.css$/,
                use: [//多个处理器从后往前调用,先预处理好css再抽取到文件
                    MiniCssExtractPlugin.loader,
                    ‘css-loader‘
                ]
            }
        ]
    },
    plugins: [//配置处理插件
        new HtmlWebpackPlugin({//根据指定模板生成html,包含打包的后js、css
            template: __dirname + ‘/app/index.tpl.html‘,
            minify: {
                minimize: true,
                collapseWhitespace: true,
                minifyCSS: true,
                minifyJS: true
            }
        }),
        new MiniCssExtractPlugin({//合并的css文件配置
            filename: ‘style-[contenthash:8].css‘,
            ignoreOrder: false
        })
    ],
    devServer: {//开发服务器,便于浏览器测试访问
        contentBase: ‘./build‘,
        port: 8090,
        historyApiFallback: true,
        inline: true
    }
}

添加构建命令

//package.json
//修改scripts配置,加入相关命令
    "scripts": {
        "build": "webpack",
        "dev": "webpack-dev-server"
    },

执行构建

//开启本地服务器,只用一次
npm run dev
//执行webpack构建
npm run build  

构建结束,在build目录下生成新文件

原文地址:https://www.cnblogs.com/himax/p/use_webpack_with_quick.html

时间: 2024-07-30 11:07:26

Webpack快速入门的相关文章

Webpack快速入门(一)

本文可供Webpack新手与Webpack老手复习之参考.注:本文基于当前最新的webpack V4.29.5:本文示例操作步骤在Mac下实现. 前提 (1)具有一定JavaScript基础(2)了解npm基本使用 什么是Webpack? 有文(参考(2))说"WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用". 而官方

webpack快速入门和实战

webpack是什么 Webpack 是一个模块打包器.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 这张图基本上解释了webpack是用来干嘛的,将一些相互依赖的模块(文件),打包成一个或多个js文件,减少http请求次数,提升性能.这些相互依赖的模块可以是图片.字体.coffee文件.样式文件.less文件等. 1. 安装 先安装 install node.js node.js包含一个包管理器:npm 基本命令 webpack // 最基本的启动web

webpack快速入门——webpack3.X 快速上手一个Demo

1.进入根目录,建两个文件夹,分别为src和dist 1).src文件夹:用来存放我们编写的javascript代码,可以简单的理解为用JavaScript编写的模块. 2).dist文件夹:用来存放供浏览器读取的文件,这个是webpack打包成的文件. 2.在dist下建立一个index.html文件,写入以下代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-

webpack快速入门——配置JS压缩,打包

1 .首先在webpack.config.js中引入 const uglify = require('uglifyjs-webpack-plugin'); 2.然后在plugins配置里 plugins:[ new uglify() ] 3.在终端输入webpack,你会发现JS代码已经被压缩了,如果你用的是VSCode,可以按住Alt+Z代码自动换行,查看效果 4.上图

webpack快速入门——插件配置:HTML文件的发布

1.把dist中的index.html复制到src目录中,并去掉我们引入的js 2.在webpack.config.js中引入 const htmlPlugin = require('html-webpack-plugin'); 3.引入后进行安装   cnpm i html-webpack-plugin --save-dev 4.在webpack.config.js中进行插件配置 new htmlPlugin({ minify:{ removeAttributeQuotes:true }, h

Webpack快速入门(二)

在前文中,已经成功使用Webpack打包并生成了一个目标.js文件.但是,在终端中进行复杂的操作,显然是不太方便且容易出错的.接下来,让我们学习Webpack的另一种更常见的使用方法,即通过配置文件来使用Webpack.这也是webpack的重点使用方式. 首先,提醒注意的是,我们要学习的这个配置文件其实也是一个简单的JavaScript模块文件,我们可以把所有的与打包相关的信息放在里面.通过一个js文件来实现配置功能的一个重要好处是,你可以在其中加入灵活多样的注释--在.json配置文件中是非

Webpack快速入门(三)

作为前两篇的补充,本文想再说明一下npx命令相关的另一种实现. NPM Scripts 在前面的文章中,我们提到使用如下命令方式: npx webpack ...... 于是,位于"./node_modules/.bin/webpack"便会被执行.这得益于npx这个命令. 其实,还有另外一种方式,更为常用,即借助于npm run命令和package.json配置文件中的"scripts"键. 示例 请看下面的配置文件: { "name": &q

Webpack v4.8.3 快速入门指南

一.进入 https://webpack.docschina.org/ 官方文档,点击 "文档" 进入 文档页面,文档中包含  "概念,配置,API,指南,LOADERS,插件"  6项: 二.点击 "指南" 选项,阅读快速入门指南: 原文地址:https://www.cnblogs.com/heroljy/p/9054790.html

微服务的入门级微框架Spring Boot快速入门

详情请交流  QQ  709639943 00.微服务的入门级微框架Spring Boot快速入门 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务