Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >panda-utils:构建发布一个自己的函数库

panda-utils:构建发布一个自己的函数库

作者头像
Ewall
发布于 2020-04-01 13:21:38
发布于 2020-04-01 13:21:38
66800
代码可运行
举报
文章被收录于专栏:vue学习vue学习
运行总次数:0
代码可运行

如何构建一个libray库?构建完后怎么发布到npm让大家都可以用到?为什么要构建发布一个自己的函数库?本章就是想谈下这些问题。 webpack从0到1 panda-utils

1、缘起

  • 为什么要用webpack写一个自己的函数库?因为有一些工具函数平常是用的比较多,每次起一个新的项目都要用到,同样的工具函数老是去找很麻烦,维护一份自己的函数库,能快速的找到api(毕竟自己写的)且更高效的开发业务,何乐而不为?
  • 虽然市场有很多牛逼的库比如loadshunderscore.js等等,公司也有公共的函数库,但是如果你自己上手构建一个自己专属的函数库,用着会更爽,也更香。
  • 一方面是为了学习,一方面是为了提高生产。

2、开始

  • 先去github上新建个仓库,在本地上下载打开它并输入命令初始化并安装下webpack。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm init -y
$ npm install webpack webpack-cli --save-dev
  • 然后我们在该目录下建几个项目所需的文件:
    1. build文件夹里面放一些webpack相关的配置,因为要区分环境,所以需要拆分成三个文件。-->webpack区分打包development和production
    2. src下新建个index.js放我们的工具函数。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  panda-utils
+ |- build
+   |- webpack.common.js
+   |- webpack.dev.js
+   |- webpack.prod.js
+ |- /src
+   |- index.js
  |- package.json
  |- LICENSE
  |- README.md

3、webpack公共配置

  • 首先说最重要的,对于要发布一个对外的函数库来说,跟正常的webpack配置的区别就是要配置下output.library相关属性。这部分内容我们需要放到webpack.common.js中:
    1. 首先说下libray,这个就是你设置的一个变量名,它起到一个对外暴露的一个作用。
    2. libraryTargetlibrary是相辅相成的,它有几种值,默认是是var,可以设置为windowthis之类的,如果你设置为window,那么你引入这个包以后,window.pandaUtils就可以打印出这个对象,大概就是起了这么个作用。
    3. 因为我们这个是需要支持import/require这种模块化引入的,所以需要设置为umd
    4. 如果你的库还依赖了loadsh之类的库,那么你还需要外部化这个库,就是说在我安装panda-utils之前我必须都先安装下loadsh
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var path = require("path");

module.exports = {
  entry: "./src/index.js",

  output: {
    path: path.resolve(__dirname, "../dist"),
    filename: "panda-utils.js",
    library: "pandaUtils",
    libraryTarget: "umd"
  }
};
  • 对于其它的就比较简单了,就是一些webpack的常规化配置,webpack从0到1都涵盖了,就不细说了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装babel相关,处理js
$ npm install @babel/core @babel/preset-env babel-loader babel-plugin-add-module-exports --save-dev

# 安装clean插件,打包前删除dist文件夹
$ npm install clean-webpack-plugin --save-dev

3、生产环境配置

  • 因为我们这个库是个函数库,只需要处理js,所以生产环境下开开启mode:productionsourcemap,然后合并下webpack.common.js就可以了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 合并webpack配置的插件
$ npm install webpack-merge --save-dev
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const merge = require("webpack-merge");
const commonConfig = require("./webpack.common.js");

const prodConfig = {
  mode: "production",
  devtool: "cheap-module-source-map"
};

module.exports = merge(commonConfig, prodConfig);

4、开发环境配置

  • 需要配置开发环境是因为我们写个函数以后需要本地预览下,自己使用使用看看有没有bug,如果你对自己有信心,这部分配置就可以不用搞了。
  • 安装下开发环境下所需的基本插件:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm install webpack-dev-server html-webpack-plugin --save-dev
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const merge = require("webpack-merge");
const commonConfig = require("./webpack.common.js");
const HtmlWebpackPlugin = require("html-webpack-plugin");

const devConfig = {
  mode: "development",

  devtool: "source-map",

  devServer: {
    contentBase: "./dist",
    port: "8080",
    open: true,
    hot: true
  },

  plugins: [
    // 可以为你生成一个HTML文件
    new HtmlWebpackPlugin({
      title: "webpack从0到1"
    })
  ]
};

module.exports = merge(commonConfig, devConfig);

5、发布

  • src/index.js下随便写点工具函数测下吧,然后我们打包npm run dev本地看看即可。最后我们npm run build打包准备发布。
  • 然后我们进入扫项目的package.json中,像nameversionlicense这些东西填得填一下就行。比较需要注意的地方是:版本号每次新发布都需要+1;main写打包后的文件地址。

注意点

  • 发布还是比较简单的,首先你的有一个npmjs的账号,没有的话就先去注册一个吧!
  • 最后我们就可以执行发布命令了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 登录
$ npm login

# 查看当前镜像源
npm config get registry

# 如果是淘宝镜像源,需要设置到官方
$ npm config set registry https://registry.npmjs.org

# 发布
$ npm publish --access public

# 删除(只能删除24小时内publish的包)
$ npm unpublish <name>

6、小结

  • 大概就是这么多。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
webpack5构建一个通用的组件库
webpack5官方支持ts编写配置环境,不过需要安装几个插件支持,参考官网configuration-languages[1],我们今天使用ts配置webpack。
Maic
2022/07/28
8400
webpack5构建一个通用的组件库
15、webpack从0到1-区分打包development和production
关于对开发环境和生产环境做不同的webpack配置。 git仓库:webpack-demo 1、缘起 这章我们要做下环境打包的一个区分啊,通过上面很多章的了解学习以后,我们知道,webpack.config.js仅仅这一个配置文件已经不能满足我们的需求了,因为开发环境和生产环境配置的内容是不一样的,有这么些异同: mode模式,生产环境需配置为developmet,开发则设置为production; devtool的souremap; devServer,开发环境需要配置跨域代理转发,而生产
Ewall
2020/03/24
7720
【Webpack】320- Webpack4 入门手册(共 18 章)(下)
最近和部门老大,一起在研究团队【EFT - 前端新手村】的建设,目的在于:帮助新人快速了解和融入公司团队,帮助零基础新人学习和入门前端开发并且达到公司业务开发水平。
pingan8787
2019/08/20
2.4K0
【Webpack】320- Webpack4 入门手册(共 18 章)(下)
4-12 环境变量的使用
其实我么之前已经将webpack.config.js 按环境进行去了区分配置,那么在公共配置文件中我们能否知道当前所处的环境,并据此做逻辑区分呢?
love丁酥酥
2020/03/26
5600
webpack Develoment 和 Production 模式的区分打包
代码已上传至github github代码地址:https://github.com/Miofly/mio.git webpack.common.js const merge = require('webpack-merge') const devConfig = require('./webpack.dev') const prodConfig = require('./webpack.prod') const commonConfig = { entry: { // 上面是简写
用户10106350
2022/10/28
2820
5-10~11 webpack 性能优化(2)
然后我们修改一下 home.jsx 代码,增加一个三方库,lodash。我们装一下 lodash 然后引入:
love丁酥酥
2020/05/26
1.3K0
webpack生产、开发公共配置拆分
代码已上传至github github代码地址:https://github.com/Miofly/mio.git
用户10106350
2022/10/28
6120
4-2 Development 和 Production 模式的区分打包
接上节4-1 Tree Shaking 概念详解末尾,我们可以看到,在 mode 进行切换时,webpack.config.js 的配置也是不一样的。这很好理解,开发环境中我们更多地是考虑开发和调试方便,生产环境我们更多考虑性能。但我们总不会每次切换环境的时候,还要手动去更改配置吧。最简单就是保存两份配置,对应不同的环境。
love丁酥酥
2020/02/24
6460
webpack 基础知识整理
webpack是一个 模块打包工具,支持所有的打包语法,比如 ES Module、CommonJS、CMD、AMD。初期的webpack是用来模块打包js的,发展到现在,已经可以打包很多种文件类型,比如 css、img 。
神葳
2021/01/22
1.4K0
【Cute-Webpack】Webpack4 入门手册(共 18 章)
最近和部门老大,一起在研究团队【EFT - 前端新手村】的建设,目的在于:帮助新人快速了解和融入公司团队,帮助零基础新人学习和入门前端开发并且达到公司业务开发水平。
pingan8787
2019/08/15
2.4K1
5-4 使用 webpack-dev-server 实现请求转发
请求转发,其实是使用 webpack-dev-server 的代理功能来实现的,本节为大家介绍 webpack-dev-server 的代理功能和主要使用场景。
love丁酥酥
2020/05/09
2.6K0
5-4 使用 webpack-dev-server 实现请求转发
[打包优化]Webpack DLL
原创不易,未经作者允许禁止转载!! 认识DLL库 什么是DLL DLL全称是动态链接库(Dynamic Link Library),是为软件在Windows中实现共享函数库的一种实现方式; 那么webpack中也有内置DLL的功能,它指的是可以将可以共享,并且不经常改变的代码,抽取成一个共享的库; 这个库在之后编译的过程中,会被引入到其他项目的代码中,减少的打包的时间; DDL库的使用分为两步: 第一步:打包一个DLL库; 第二步:项目中引入DLL库 DLL打包 webpack内置DllPlugin帮助生
前端LeBron
2021/12/08
1.8K0
Webpack 实战入门系列(三):生产配置、样式文件分离及输出清理
现在vue、react很流行,新项目基本用这些新框架,组件化开发确实是趋势,但是他们再怎么发展也离不开构建工具,顶多在webpack等工具上进行再封装。现在vuecli3出来后,我感觉学习成本反而变高了,直观感觉就是文档不清爽,知识零碎。其实回到本源,vuecli3就是基于webpack来的,而且webpack本身非常好学,可以由浅到深,逐步深入。你可以不用学vue、react,只要你会html+css+js就可以用上这个打包工具。很多人不懂webpack是因为一开始就没接触过,然后最先接触的反而是vue或者react框架,结果组件api已经学晕了,突然听说这个其实是webpack的东西,一下就更懵了,所以在不懂原理的情况下,别人的包装让你更加的迷茫。有些人只想会用就行,有些人是有点搞不懂的就想搞明白。那如果你是个前端,想搞清楚本质本源的东西,真的建议你学下webpack。就从这篇入门开始吧,一小时入门webpack
一只图雀
2020/04/13
8400
构建 webpack5 知识体系【近万字总结】
我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外:目前建有江西|湖南|湖北籍前端群,可加我微信进群。
若川
2022/11/11
1.6K0
构建 webpack5 知识体系【近万字总结】
深入了解Webpack 5
本质上,有两种构建JavaScript应用程序的模式:开发和生产。以前,您已使用开发模式在本地开发环境中开始使用Webpack Dev Server。您可以更改源代码,Webpack再次将其捆绑,Webpack Dev Server会在浏览器中向您显示最新的开发版本。
前端小tips
2021/11/26
3.8K0
深入了解Webpack 5
搭建webpack项目框架
随着业务发展和前端人员的增加,搭建一个通用框架以及制定统一规范就成了必然。对于选型这方面,一开始好像就没考虑其他框架,直接选了webpack。webpack的优点就不多说了,可扩展性,强大的npm插件库,说干就干。
jojo
2019/03/12
2.4K0
搭建webpack项目框架
webpack优化
webpack.config 按照production和dev分开配置, wepback.base.config.js
刘嘿哈
2022/10/25
2380
Webpack系列——快速入门
多文件入口 对entry采用对象写法,指定对应的键值对,为了输出这多个文件可以使用占位符
用户1515472
2019/07/24
6830
Webpack配置实战
本篇将从实践出发,搭建一个基础的支持模块化开发的项目,在第二章节《进阶配置》中使用 webpack 搭建一个 SASS + TS + React 的项目。
gogo2027
2022/10/17
1.4K0
前端工程化(二)---webpack配置
一些知识点 目前在我的项目中起到的作用: 1、webpack在前端工程打包过程中起到了什么作用   声明入口(entry):通俗来讲,就是项目的构建过程是从哪开始,指定的是一个或多个js文件。前端开发,都是基于es6的模块化概念的,每一个文件都可以认为是一个模块,模块之间使用import语句相互引用,相互协作。这种依赖最终会形成一颗依赖树,而入口文件就是树的根。webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。每个依赖项随即被处理,最终输出到**.bundles文件中   声明出口(ou
用户2193479
2018/06/28
1.3K0
相关推荐
webpack5构建一个通用的组件库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档