【问题标题】:Published angular library doesn't has imported modules on npmjs已发布的 Angular 库在 npmjs 上没有导入模块
【发布时间】:2019-04-04 11:27:53
【问题描述】:

我想在 npmjs 中发布一个简单的 Angular 库。所以,我遵循的步骤是:

  1. 创建项目:

    ng new my-project
    
  2. 创建库:

    ng g library my-lib
    
  3. 为库创建了一个模块:

    ng g module module1 --project my-lib
    
  4. 给模块写一些代码:

  5. 将库声明添加到 public_api.ts 文件中:

    export * from './lib/module1/module1.module';
    
  6. 构建和发布库:

    ng build my-lib
    cd dist/my-lib
    npm publish
    

当我在本地测试库时,它可以工作并且库具有导出的模块。

如果我跑了

npm pack

然后用

导入库
npm install --save path/to/my-lib.tgz 

在另一个项目中,它可以工作并且库具有导出的模块。

但是

当我使用

从 npm repo 安装库时
npm install --save my-lib 

库下载和安装没问题,但是库好像是空的,所以缺少所需的模块,如果我尝试在项目中导入模块,它会失败,并且我收到一条错误消息,指出模块不存在存在。

如何发布包含模块的库或我想保持可用的模块?

【问题讨论】:

  • 首先你要检查你从 NPM 在 node_module 下获得的模块。在尝试使用/导入之前查看它们是否包含任何文件夹/代码
  • 我已经检查了 node_modules 文件夹。当我从 npm repo 导入 lib 时它什么都没有,所以就像模块从未导出过一样
  • 那你应该修改你发布模块到 NPM 的部分你是否指向正确的目录...等等等等...也许尝试先发布一个随机的 js 文件看看是否它有效
  • 它是正确的路径(或目录)。我已经尝试了几次。问题是 npm pack 命令通过而 npm publish 方式失败的测试。太奇怪了。

标签: angular npm angular7 npmjs


【解决方案1】:

我解决了这个问题。 第六步,运行:

ng build my-lib
cd dist/my-lib
npm pack
npm publish my-lib-0.0.1.tgz

现在,它已发布并包含我需要的所有内容,我可以从 npm repo 运行 npm install 而不会出现任何问题。 解决方案只是在之前运行 npm pack 命令并发布 tgz 文件而不是 dist 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2020-03-30
    • 2018-07-23
    相关资源
    最近更新 更多