# 01-custom-library-npm 中文文档

规范地址：https://npmcn.com/package/01-custom-library-npm/

版本：1\.0\.2
npm 元数据更新时间：2022-04-04T10:06:25.309Z
中文译文更新时间：2026-10-31T10:32:48.893Z
软件包许可：ISC

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/01-custom-library-npm
原文对照：https://npmcn.com/package/01-custom-library-npm/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：80 kB，11 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2022-02-28T03:01:13.575Z
- 最新版本发布：2022-02-28T07:17:24.301Z
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

```js
 npm init -y
 npm i webpack webpack-cli lodash -D
```

#### 2）配置webpack

-   将项目中使用lodash也打包进项目中，增大了项目的体积（不推荐）

```js
// webpack.config.js
const path = require('path')
```

## 安装

```sh
npm install 01-custom-library-npm
```

也可以使用：`pnpm add 01-custom-library-npm`、`yarn add 01-custom-library-npm`、`bun add 01-custom-library-npm`

## README

## 1、项目搭建

#### 1）项目初始化安装依赖

```js
npm init -y
npm i webpack webpack-cli lodash -D
```

#### 2）配置webpack

-   将项目中使用lodash也打包进项目中，增大了项目的体积（不推荐）

```js
// webpack.config.js
const path = require('path')

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    clean: true,
    filename: 'webpack-numbers.js',
    library: {
      // library 向外暴露的对象名
      name: 'webpackNumbers',
      // 兼容不同的环境 CommonJS、AMD、Node.js 等
      type: 'umd',
    },
  },
}
```

-   将lodash等第三方包外部化，由用户安装（推荐）

```js
const path = require('path')

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    clean: true,
    filename: 'webpack-numbers.js',
    library: {
      // library 向外暴露的对象名
      name: 'webpackNumbers',
      // 兼容不同的环境 CommonJS、AMD、Node.js 等
      type: 'umd',
    },
  },

  // 外部扩展：https://webpack.docschina.org/configuration/externals/#externals
  externals: {
    lodash: {
      commonjs: 'lodash',
      commonjs2: 'lodash',
      amd: 'lodash',
      root: '_',
    },
  },
}
```

#### 3）配置npm script并打包构建

```js
"build": "webpack --config webpack.config.js"
```

同时将`package.json`文件中`main`设置为打包构建的文件

```js
"main": "dist/webpack-numbers.js",
```

## 2、发布流程

#### 1）将npm的registry设置为官方的仓库（我们需要将包发布到官方仓库）

-   不能发布到`taobao，taobao`镜像是只读镜像，会发布失败
-   若要发布的私服，需要将仓库地址设置为私服地址

```js
npm config get registry

// 发布library需要使用官方仓库
npm config set registry https://registry.npmjs.org
npm config set registry https://registry.npm.taobao.org
```

#### 2）在终端中登录npm

-   `npm login`输入用户名、密码和邮箱登录npm

#### 3）发布library到npm

-   使用命令：`npm publish`

```js
npm logout //登出

// 如果不知道当前登录的账号可以用who命令查看身份：
npm who am i

// 发布的包在72小时内是可以删除的
npm unpublish  <pkg>[@<version>]
npm unpublish 01-custom-library-npm@1.0.1
```

## 3、更新包

-   1、修改完包的代码后，还需要更新下`package.json`中的`version`（不能和之前的版本相同）
-   2、已经登录过了，只需使用发布命令`npm publish`更新包

## 4、发布注意问题

-   1、必须将`registry`设置为官方仓库，否则发布失败
-   2、每次修改后重新发布，需要修改`package.json`中的版本号

## 5、测试

-   CommonJS：在test文件夹下创建test.js，可以使用node去运行代码

```js
// test.js
const webpackNumbers = require('../dist/webpack-numbers')

console.log(webpackNumbers.numToWord(3));
```

-   script 标签测试：在test文件夹下创建index.html

```html
<body>
  <script src="../dist/webpack-numbers.js"></script>
  <script>
    console.log(webpackNumbers);
  </script>
</body>
```

## 5、webpack支持es模块引入

## 常见问题

### 01-custom-library-npm 是什么？

npm init -y npm i webpack webpack-cli lodash -D 2）配置webpack 将项目中使用lodash也打包进项目中，增大了项目的体积（不推荐） // webpack\.config\.js const path = require\('path'\)

### 如何安装 01-custom-library-npm？

在项目目录运行 npm install 01-custom-library-npm，或使用 pnpm add / yarn add / bun add。

### 01-custom-library-npm 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/01-custom-library-npm 是否存在。

### 01-custom-library-npm 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### 01-custom-library-npm 可以商用吗？

01-custom-library-npm 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### 01-custom-library-npm 还在维护吗？

最新版本 1\.0\.2 发布于 2022/02/28（4 年前）；至今共发布 3 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/02/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

