返回

Angular Npm 包开发之踩坑小记(续)

前端

引言

在上一篇文章《Angular Npm 包开发之踩坑小记》中,我们分享了一些在开发 Angular Npm 包时遇到的坑。本文将继续分享后续踩坑经验,帮助开发者避免类似错误,提升开发效率。

坑点 5:注释不需要注明参数类型

踩坑原因:

TypeScript 已经对参数和返回的值做了类型限定,所以注释中不需要再注明类型。

解决方案:

移除注释中的类型信息。

示例:

// 错误:注释中注明了参数类型
/**
 * 计算两个数字的和
 * @param {number} a 第一个数字
 * @param {number} b 第二个数字
 * @returns {number} 和
 */
function sum(a, b) {
  return a + b;
}
// 正确:注释中没有注明参数类型
/**
 * 计算两个数字的和
 * @param a 第一个数字
 * @param b 第二个数字
 * @returns 和
 */
function sum(a, b) {
  return a + b;
}

坑点 6:打包之后新增的文件没有被自动引入

踩坑原因:

在 Angular CLI 的 ng-package 命令中,没有指定 --watch 选项,导致打包之后新增的文件没有被自动引入。

解决方案:

在 ng-package 命令中添加 --watch 选项。

示例:

ng-package --watch

坑点 7:npm publish 报错,提示包名已被占用

踩坑原因:

在 npm 上发布包时,包名已经被其他开发者占用。

解决方案:

更换一个新的包名,或者联系原开发者协商使用该包名。

示例:

npm publish --name new-package-name

坑点 8:使用 Rollup 时报错,提示找不到模块

踩坑原因:

在使用 Rollup 打包时,没有正确配置外部模块。

解决方案:

在 Rollup 的配置中添加 external 选项,指定需要排除的外部模块。

示例:

// Rollup 配置
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import typescript from 'rollup-plugin-typescript2';
import { terser } from 'rollup-plugin-terser';

export default {
  input: 'src/index.ts',
  output: {
    file: 'dist/index.js',
    format: 'cjs',
  },
  plugins: [
    resolve(),
    commonjs(),
    typescript(),
    terser(),
  ],
  external: ['rxjs'],
};

总结

通过记录 Angular Npm 包开发过程中遇到的这些坑,我们可以吸取经验教训,避免在未来遇到类似问题。希望本文能够对开发者有所帮助,让 Npm 包开发之路更加顺畅。