如何使用webpack打包一个库library,使用webpack打包sdk.

简介: 如何使用webpack打包一个库library,使用webpack打包sdk.

如何使用webpack打包一个库library


用webpack打包时长会随着代码增加而变长,代码量可能比较大的可以参考我的另一篇使用vite打包sdk文章.

使用vite打包libary模式打包sdk


如果你需要自己封装一些包给别人使用,那么可以参考以下方法


初始化库


mkdir library
cd library
npm init -y


经过以上步骤后会生成一个library文件夹,里面包含一个package.json文件。然后简单修改为如下所示:

{
  "name": "library",
  "version": "1.0.0",
  "description": "",
  "main": "./dist/library.js",
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "rocky",
  "license": "MIT"
}


简单创建几个文件


在根目录下新建src文件夹,新建一个math.js和string.js。相关文件内容如下:

// math.js
export function add(a,b){
    return a+b;
}
export function minus(a,b){
    return a-b;
}
export function multiply(a,b){
    return a*b;
}
export function division(a,b){
    return a/b;
}
// string.js
export function join(a,b){
    return a+" "+b;
}

继续新建一个index.js

import * as math from "./math";
import * as string from "./string";
export default {math,string}


简单安装webpack依赖


npm install webpack webpack-cli --save


安装的同时,可以创建webpack配置文件webpack.config.js,如下配置:

const path = require("path");
module.exports={
    mode:"production",
    entry:"./src/index.js",
    output:{
        path:path.resolve(__dirname,"dist"),
        filename:"library.js",
        library:"library",// 在全局变量中增加一个library变量
        libraryTarget:"umd"
    }
}


安装成功后,执行打包命令

npm run build


之后会在根目录下生成一个dist文件夹,里面包含一个library.js。


如何使用呢?


如果别人要使用这个打包后的library.js的话,可能会有如下几种方式:

// es6方式
import library from "library"
// commonjs方式
const library=require("library")
// AMD方式
require(["library"],function(){})
// script标签引入
<script src="library.js"></script>


在dist文件夹里创建一个index.html,用script引入之前打包生成的library.js。浏览器打开index.html,在控制台中输入library,会得到如下所示的结果:


<script src="../dist/library.js">
    </script>
    <script>
        console.log(library);
    </script>

7729a67067e84d06ba303be6dfbaf117.png

如果不想要default这一层,在Index.js:

import * as math from "./math";
import * as string from "./string";
export { math, string }


一个简单的库便打包生成了。

注解:webpack中libraryTarget配置项可以设为umd,表示采用umd规范,如果设置为this,表示在this下挂载了一个library变量。更多用法可参考


webpack官网:https://webpack.js.org/configuration/output/#outputlibrarytarget


引入别的库用法


假设需要引入lodash.安装lodash

npm install lodash --save


修改之前创建的string.js

import _ from "lodash";
export function join(a,b){
    // return a+" "+b;
    return _.join([a,b]," ");
}


运行打包命令,发现打包出来的库体积变大了,因为我们引入了lodash,导致包变大。怎么办呢?修改webpack配置文件。

增加一个externals配置项:

const path =require("path");
module.exports={
    mode:"production",
    entry:"./src/index.js",
    externals:["lodash"],// 配置不打包文件
    output:{
        path:path.resolve(__dirname,"dist"),
        filename:"library.js",
        library:"library",
        libraryTarget:"umd"
    }
}


之后打包就会发现库的体积又变小了。


以上就是一个简单打包库的过程,打包完成后,就可以使用npm相关命令将库发布到npm仓库,发布成功后,就可以让别的小伙伴使用了。也可以直接发送打包后的文件给小伙伴引入使用 !


参考链接:https://segmentfault.com/a/1190000021318631


相关文章
|
4月前
|
JavaScript
webpack打包TS
webpack打包TS
142 60
|
3月前
|
缓存 前端开发 JavaScript
Webpack 打包的基本原理
【10月更文挑战第5天】
|
3月前
|
前端开发 JavaScript
ES6模块化和webpack打包
【10月更文挑战第5天】
|
4月前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
268 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
3月前
|
缓存 前端开发 JavaScript
深入了解Webpack:模块打包的革命
【10月更文挑战第11天】深入了解Webpack:模块打包的革命
|
3月前
|
缓存 前端开发 JavaScript
Webpack技术深度解析:模块打包与性能优化
【10月更文挑战第13天】Webpack技术深度解析:模块打包与性能优化
|
3月前
|
前端开发 JavaScript 开发者
深入了解Webpack:现代JavaScript应用的打包利器
【10月更文挑战第11天】 深入了解Webpack:现代JavaScript应用的打包利器
|
4月前
|
缓存
webpack 打包多页面应用
webpack 打包多页面应用
42 1
|
4月前
webpack 打包多页面应用
webpack 打包多页面应用
|
4月前
|
前端开发 开发者
在前端开发中,webpack 作为一个强大的模块打包工具,为我们提供了丰富的功能和扩展性
【9月更文挑战第1天】在前端开发中,Webpack 作为强大的模块打包工具,提供了丰富的功能和扩展性。本文重点介绍 DefinePlugin 插件,详细探讨其原理、功能及实际应用。DefinePlugin 可在编译过程中动态定义全局变量,适用于环境变量配置、动态加载资源、接口地址配置等场景,有助于提升代码质量和开发效率。通过具体配置示例和注意事项,帮助开发者更好地利用此插件优化项目。
96 13