webpack基础

简介:

webpack-基础
貌似这些属于编译原理的内容。
当时看了一点编译原理,当中的自动机,彻底懵。
不过大概了解了一点内容。感觉webpack一个打包工具非常类似于一个编译器,将一个文件,转换为另外一个文件。

一些概念

入口

入口,即寻找入口文件的及其依赖项的文件。即编译前的文件
配置文件为webpack.config.js中修改为

module.exports = { 
  entry: "./app.js"
}

使用这个可以设置入口文件为./app.js由该文件,可以寻找相关的依赖

出口

output告诉要生成那些文件

const path = require("path");

module.exports = { 
  entry: "./app.js",
  output: {
      filename: "my-first-webpack.js"
  }
}

导出该文件

loader

loader可以让webpack处理非js文件。

  module: {
      rules: [
          {test: /\.txt$/, use: 'raw-loader'}    // 再遇到txt文件的时候,需要使用ras-loader进行转换一下 
      ]
  }

遇到txt文件的时候,需要使用raw-loader进行转换

类似于express中的中间件

raw-loader表示将文件作为字符串进行读取

插件

即打包,优化,定义环境中的变量等。

  plugins: [
      new HtmlWebpackPlugin({template: './src/index.html'})
  ]

入口文件

const config = {
    entry: './file.js',    // 定义入口文件
}

module.exports = config;

分离应用程序和第三方库

const config = {
    entry: {
        app: './src/app.js',
        vendors: './src/vendors.js'
    }
}

module.exports = config;

在上方中webpack会根据app和vendors分别创建两个互相没有任何依赖的依赖图,进行打包
在平常中,一个html文档,只使用一个入口文件。

出口

如何写出编译后的文件。

const config = {
    entry: {
        app: './src/app.js',
        vendors: './src/vendors.js'
    },
    output: {
        filename: 'bundle.js',    // 文件名称
        path: '/home/assets'    // 输出后的绝对路径
    }
}

module.exports = config;
const config = {
    entry: {
        app: './src/app.js',
        vendors: './src/vendors.js'
    },
    output: {
        filename: '[name].js',    // 文件名称,name为对象名,输出的文件为app.js vendors.js
        path: '/home/assets'    // 输出后的绝对路径
    }
}

module.exports = config;

出口,即编译完成后生成的文件

load

load为代码转换,可以使用这个加载css文件,使用这个将typeScript转为JavaScript
安装

npm install --save-dev ts-loader
const config = {
    entry: {
        app: './app.js'
    },
    output: {
        filename: '[name].js',    // 文件名称,name为对象名,输出的文件为app.js vendors.js
        path: '/home/assets'    // 输出后的绝对路径
    },
    module: {
        rules: [
            {test: /\.ts$/, use: 'ts-loader'}
        ]
    }
}

module.exports = config;

使用这个可以在打包的时候,将ts文件转为js文件。

插件

创建同名的js文件
这里的是apply()函数。

const pluginName = "ConsoleLogOnBuildWebpackPlugin"

class ConsoleLogOnBuildWebpackPlugin {
    apply(){
        console.log('构建开始');
    }
}

使用插件

const webpack = require('webpack');    // 访问内置插件

const config = {
    entry: {
        app: './app.js'
    },
    output: {
        filename: '[name].js',    // 文件名称,name为对象名,输出的文件为app.js vendors.js
        path: '/home/assets'    // 输出后的绝对路径
    },
    module: {
        rules: [
            {test: /\.ts$/, use: 'ts-loader'}
        ]
    },
    plugins: [
        new webpack.optimize.UgifyJsPlugin(),
        new ConsoleLogOnBuildWebpackPlugin()
    ]
}

module.exports = config;
目录
相关文章
|
6月前
|
缓存 资源调度 编译器
原来是这样啊!浅谈webpack4和webpack5的区别
相对于webpack4,webpack5内置了很多plugin插件,比如、打包、压缩、缓存
424 1
|
6月前
|
缓存 JavaScript 前端开发
webpack基础
webpack基础
18 0
|
8月前
|
缓存
如何提高webpack的构建速度?
如何提高webpack的构建速度?
130 0
|
9月前
|
JavaScript 前端开发
Webpack5 系列(一):基础篇1
Webpack5 系列(一):基础篇
39 0
|
9月前
|
JavaScript 前端开发 API
Webpack5 系列(一):基础篇2
Webpack5 系列(一):基础篇2
60 0
|
9月前
|
JavaScript
Webpack5 系列(一):基础篇3
Webpack5 系列(一):基础篇3
46 0
|
JSON JavaScript 前端开发
webpack基础篇(二):webpack核心概念
webpack基础篇(二):webpack核心概念
92 0
webpack基础篇(二):webpack核心概念
|
JSON JavaScript 前端开发
|
缓存 前端开发 JavaScript
webpack从0到1构建
绝大部分生产项目都是基于cli脚手架创建一个比较完善的项目,从早期的webpack配置工程师到后面的无需配置,大大解放了前端工程建设。但是时常会遇到,不依赖成熟的脚手架,从零搭过项目吗,有遇到哪些问题吗?或者有了解loader和plugin吗?如果只是使用脚手架,作为一个深耕业务一线的工具人,什么?还要自己搭?还要写loader,这就过分了。
163 0
webpack从0到1构建
|
JavaScript 前端开发 网络安全
webpack学习
webpack学习
116 0
webpack学习