cle*_*lem 7 npm typescript angular
我正在尝试在NPM上发布一个打字稿库,但是发布后我找不到“好的”路径。
在这一点上,我遵循一些指南,但是找不到解决方案。
问题:因此,请考虑以下结构:
dist
|- Alls files generated after tsc build
lib
|- All TS files of library (source)
CHANGELOG.md
LICENSE
package.json
README.md
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
发布后,例如在Angular应用程序中,我将键入:
import {Component} from '<library name>/dist/Component';
Run Code Online (Sandbox Code Playgroud)
我的问题:如何配置项目导入到有from '<library name>/Component'
代替from '<library name>/dist/Component'
吗?
谢谢
根据@joe-clay的建议,我找到了解决方案。
我的新结构如下:
dist
|- Alls files generated after tsc build
|- package.json
|- LICENSE
|- README.md
src
|- All TS files of library (source)
CHANGELOG.md
LICENSE
README.md
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
该dist
目录通过 NPM 包页面的 README.md 和 LICENSE 文件发布在 NPM 上。
根目录是 Github 上的入口点,其中包含 README.md、LICENSE 和 CHANGELOG.md,用于 Github 上的开发过程。
tsconfig.json
放置在根目录中,因为如果位于目录内部,我找不到正确构建的解决方案dist
。
在 中package.json
,我添加了脚本"build": "cd ../ && tsc"
以便能够在目录npm run build
内执行。dist
通过这种结构,库开发和 NPM 发布工作正常。
我可以从我的应用程序中使用此导入:
import {Component} from '<library name>/Component';
Run Code Online (Sandbox Code Playgroud)
再次感谢你。
我找到了一个非常干净的解决方案,不需要将您的 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
Run Code Online (Sandbox Code Playgroud)
辅助模块的 package.json 只需要包含
{
"name": "package/secondary-package-name",
"private": true,
"main": "../dist/secondary-package-name/index.js"
}
Run Code Online (Sandbox Code Playgroud)
回到你的 dist
然后,您应该能够像这样引用辅助包的导出:
import { someFn } from "package/secondary-package-name"
Run Code Online (Sandbox Code Playgroud)
如果它是从该目录中的 index.ts 文件导出的
您还需要确保files
主 package.json的字段包括:
"files": [
"dist",
"secondary-package-name"
],
Run Code Online (Sandbox Code Playgroud)