Bootstrap

【webpack】使用webpack api打包一个最简单的js资源

  1. 简单了解一下webpack

本质上,webpack是一个用于现代javascript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图,然后将项目中所需要的每一个模块组合成一个或多个bundles,它们均为静态资源,用于展示你的内容。

  1. 依赖图
    每当一个文件依赖另一个文件时,webpack都会将文件视为直接存在依赖关系,这使得webpack可以获取非代码资源,如images或web字体等,并会把它们作为依赖提供给应用程序。
  2. 什么是webpack cli?
    通过命令行的方式调用webpack,被称为webpack cli.
  3. 当我们在终端执行webpack命令时发生了什么
    1. 调用执行webpack包对应的bin目录下的webpack.js文件,紧接着再调用webpack-cli包
    2. 调用执行webpack-cli包对应的bin目录下的cli.js文件,然后再继续调用webpack包。
    3. 调用执行webpack包的API进行打包,如create-react-app的react-scripts:
// create-react-app 通过调用 webpack api 来打包
function build(previousFileSizes) {
  console.log('Creating an optimized production build...');
  const compiler = webpack(config);
  return new Promise((resolve, reject) => {
    compiler.run((err, stats) => {
      let messages;
      //  ...其他操作
    })
  })
}

// 其他操作:这里可以通过stats对象拿到打包后所有资源体积以及打包时间。(可用于脚手架日志构建)
  1. webpack api简介
    使用webpack api: 将webpack.config.js的配置作为参数传递给webpack函数即可。
    使用示例:
const webpack = require('webpack');
const compiler = webpack({
  // webpack的诸多配置置于此处
  entry: './index.js'
});
compiler.run((err, stat) => {
  // 通过stat对象获取关于构建时间及资源等信息
})

示例: 使用webpack api打包一个最简单的js资源。
在这里插入图片描述
代码如下:

  1. 新建一个index.js文件,写入部分内容
const sum = (a, b) => {
  return a+b;
}
const result = sum(1,2);
console.log(result);

  1. 新建一个test.js文件,写入部分内容。
const minus = (a, b) => {
  return a-b;
}

const resultMinus = minus(2, 1);
console.log(minus);
  1. 新建build.js文件,使用webpack api打包js资源
const path = require('path');
const webpack = require('webpack');

function wrapBuild() {
  return webpack({
    entry:{ 
      index: './index.js',
      test: './test.js'
    },
    mode: 'none',
    output: {
      path: path.resolve(__dirname, 'build'),
      filename: '[name].js'
    }
  })
}

wrapBuild().run((err, stat) => {
  const startTime = stat.startTime;
  const endTime = stat.endTime;
  console.log('构建时间: ', endTime - startTime);
})

  1. 命令行执行node ./build.js 进行打包。
  2. 查看打包产物
    在这里插入图片描述
    在这里插入图片描述
;