angular - 如何在导入时没有 "dist"的情况下在 NPM 上发布 TypeScript 模块?

标签 angular typescript npm

我正在尝试在 NPM 上发布 typescript 库,但发布后我无法找到“好的”路径。

我在这一点上遵循了几个指南,但我没有找到解决方案。

问题:因此,考虑以下结构:

dist
 |- Alls files generated after tsc build
lib
 |- All TS files of library (source)
CHANGELOG.md
LICENSE
package.json
README.md
tsconfig.json

发布后,例如在 Angular 应用程序中,我将输入:

import {Component} from '<library name>/dist/Component';

我的问题:如何将项目导入配置为 from '<library name>/Component'相反 from '<library name>/dist/Component'好吗?

谢谢

最佳答案

我找到了一个非常干净的解决方案,不需要将 package.json 复制到 dist 或从 dist 发布。

您可以将您的项目构建为:

package.json (for entire project)
src
 | secondary-package-name
   |- index.ts
secondary-package-name
 |- package.json (for secondary-module-name)
dist
 |- generated files

您的辅助模块的 package.json 只需要包含

{
  "name": "package/secondary-package-name",
  "private": true,
  "main": "../dist/secondary-package-name/index.js"
}

指向你的dist

然后您应该能够像这样引用二级包的导出:

import { someFn } from "package/secondary-package-name"

前提是从该目录下的index.ts文件中导出

您还需要确保主 package.json 的 files 字段包括:

"files": [
    "dist",
    "secondary-package-name"
  ],

关于angular - 如何在导入时没有 "dist"的情况下在 NPM 上发布 TypeScript 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49858168/

相关文章:

Angular 2 - INPUT 元素类型 FILE 的重置值

javascript - 使用 webpack 优化 Angular 2 应用程序构建持续时间

javascript - 如何获取对象列表并创建列表中对象的特定属性的 JSON?

javascript - 如何在 Angular 上动态显示所选行数据的总和?

macos - 任何命令的 NPM 错误

html - 如何从 Node 包中包含 css/js 文件?

html - 如何确保内容永远不会在固定 Material 工具栏下滚动?

typescript - 从另一个 TypeScript 包导入 TypeScript 类型

node.js - 如何在 Windows 上的 npm 脚本中使用环境变量?

angular - 错误 : No NgModule metadata found for 'AppModule'