问题标签 [ng-packagr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
499 浏览

angular - 如何让 ng-packagr 生成源映射

我使用 Angular CLI 制作了一个 Angular 应用程序,并向其中添加了一些 packagr 文件。当我运行 pacakgr 时,不会为 dist 文件夹生成源映射。我该如何做到这一点?我已经在 tsconfig.json 中启用了它们,这是我所期望的。

这是一个演示问题的简单存储库:

0 投票
0 回答
843 浏览

angular5 - ng-packagr 和共享模块

我正在尝试使用 ng-pacakgr 将模块 X 与 Y 的依赖关系打包。X 和 Y 具有服务和组件。

应用程序/模块结构是:

  • ModuleX 导入 ModuleY
  • X.forRoot() 提供 ServiceY。
  • ServiceY 用于 AppModule 和 ModuleX。
  • AppModule 导入模块 X.forRoot() 和 Y.forRoot()。

使用 ng-packagr 打包 ModuleX 告诉我:

在 options.globals 中没有为外部模块“Y”提供名称 - 猜测“Y”

好的

运行该应用程序不会给出任何错误,但似乎我有两个 ServiceY 实例。

查看 chrome 中的 webpack 源代码,我有两次 ServiceY:

在两个 ServiceY 的构造函数中定位断点表明它在两个类中都停止了。

理论上,ServiceY 应该在我的整个应用程序中实例化一次,因为 ServiceY 在应用程序的根目录中提供

我尝试添加具有各种值的选项 umdModuleIds,但看起来并没有什么不同。

总之,我有两个唯一的 ServiceY 实例(一个由应用程序导入,另一个由 X 导入(并重新定义))。

问题是:

  • taht 来自哪里。
  • 我怎么能确定 Y 在我的应用程序中只实例化一次。
  • 我应该在 umdModuleIds 中配置什么(如何找到 moduleId)

谢谢。

版本信息

0 投票
1 回答
776 浏览

javascript - ng-packagr:找不到命名空间接口

我尝试建立一个服务库。我通常使用服务文件中的接口。phpStorm 没有为此创建“导入”语句,它可以正常工作ng serve

这里是接口:(我只将它简化为接口的根,因为它在这篇文章中更清晰。通常有更多接口)

但是当我运行时,npm run packagr我得到了这个错误:

有任何想法吗?我已经尝试在 public_api.ts 中导入接口,但这对我不起作用。

0 投票
6 回答
4079 浏览

angular - ng-packagr:构建错误 EPERM:不允许操作

我按照Nikolas LeBlanc 的这篇教程构建了一个 Angular 4 组件库。本教程描述了一种在另一个项目中重用模块的方法,方法是打包一个项目并将其安装到另一个项目中。

首先,这是我的软件版本:

  • Windows 10 专业版:1709 内部版本 16299.371
  • 角 IDE:17.0.0.c0000019t201804160508
  • ng-packagr:2.4.2
  • @角/*:5.2.10
  • 打字稿:2.5.3
  • rxjs:5.5.10
  • 节点:9.4.0
  • npm:5.6.0

除了标题“创建我们的包”之外,我无法进一步遵循本教程,因为执行以下命令:

ng-packagr -p ng-package.json

执行此命令时会出现以下错误:

再次尝试时出现以下错误:

我也在我的 Mac 上尝试过,但一切正常,但我们都在 Windows 机器上工作。那么如何让 ng-packagr 在我的 Windows 机器上工作呢?

0 投票
1 回答
10808 浏览

angular - NullInjectorError:使用 ng-packagr 时没有 StateObservable 的提供者

我有一个使用 ngrx/store 的 Angular 5 项目。该项目由一个应用程序和一个应用程序使用的共享库组成。直到今天,我们一直在为这两个项目一起编译 TypeScript——这个库只是用 TypeScript 代码“发布”的。

今天,我使用了这个库ng-packagr并将其拉入到应用程序中yarn link,这样我就可以运行本地代码。但是,当我尝试启动我的应用程序时,我在浏览器中收到此错误:

Unhandled Promise rejection: StaticInjectorError(AppModule)[Store -> StateObservable]: StaticInjectorError(Platform: core)[Store -> StateObservable]: NullInjectorError: No provider for StateObservable! ; Zone: <root> ; Task: Promise.then ; Value: Error: StaticInjectorError(AppModule)[Store -> StateObservable]: StaticInjectorError(Platform: core)[Store -> StateObservable]: NullInjectorError: No provider for StateObservable! at _NullInjector.get (core.js:1002) at resolveToken (core.js:1300) at tryResolveToken (core.js:1242) at StaticInjector.get (core.js:1110) at resolveToken (core.js:1300) at tryResolveToken (core.js:1242) at StaticInjector.get (core.js:1110) at resolveNgModuleDep (core.js:10854) at _createClass (core.js:10895) at _createProviderInstance$1 (core.js:10865)

我不知道这是从哪里来的错误。我唯一的线索是它提到了AppModule. 在我的AppModule中,我正在导入@ngrx/store并导入StoreModule.forRoot我的模块。

0 投票
1 回答
154 浏览

javascript - 无法获取使用 ng-packagr 发布的已发布包

在遵循本教程时。这是我得到的错误。唯一的区别是我声明了一个指令而不是组件,尽管它在本地开发中工作正常,但是当通过 npm 安装时,它会给出以下错误:

0 投票
2 回答
915 浏览

angular - 在 ng-packagr 构建中包含 json 文件

我想将 json 文件导入我的 Angular 5 应用程序,然后构建一个库。我可以通过包含此代码来完成第一部分

to typings.d.ts,但是当我尝试构建它时,它失败并出现错误

有什么办法解决吗?

0 投票
1 回答
367 浏览

angular - 共享组件可以使用自己的私有@ngrx/store 吗?

我正在开发一个 Angular 共享组件(在它自己的仓库中,使用 ng-packagr 和 angular 5,作为 npm 包发布),我想使用 @ngrx/store,因为该组件足够复杂,足以证明这一点。我希望商店在组件的内部。特别是,这意味着:

  • 集成应用程序不需要知道 @ngrx 来使用我的组件
  • 集成应用程序可以使用与我的组件不同的 @ngrx 商店。

我的组件需要什么样的依赖关系(在我的组件中package.json,例如 peerDependencies 或依赖项)和初始化代码(在我的组件的主模块中my-component.module.ts)?

集成应用程序发布后需要引入、初始化和使用什么样的依赖关系(在集成应用程序中package.json)和初始化代码(在集成应用程序的主模块中) ?app.module.ts

0 投票
1 回答
24 浏览

npm - package.json 无法找到文件

我在 package.json 的脚本部分中添加了一个脚本,该脚本位于根目录中

但是在使用运行此脚本时

给出错误提示“没有这样的文件或目录”并尝试在该位置找到我的文件

代替

我们是否需要一些配置来映射文件?

0 投票
5 回答
20029 浏览

angular-cli - Angular 6 使用资产构建库

在构建和打包 Angular 6 库时,我似乎无法指示 Angular CLI 将库的资产复制到dist/assets每次构建的文件夹中。

假设项目的文件夹结构是这样的 -

当我运行ng build lib1或文件夹没有被复制ng build lib1 --prod到.assets/iconsdist/lib1/assets/icons

如果我运行,ng buildsrc/assets(根 src/assets)正在被复制,但不是projects/lib1/assets.

angular.json文件包含对的引用,"assets": ["src/assets"]但不允许将assets密钥专门添加到项目中,只能添加到主根应用程序。添加时,我收到以下错误:

架构验证失败并出现以下错误:数据路径“”不应具有其他属性(资产)。

我还尝试将以下自定义复制规则添加到资产中,以将资产复制到 dist/lib 而不是 dist/appname:

但我收到以下错误:

无法将资产写入输出路径之外的位置。

是否有一种内置方式来管理每个构建中的库资产副本?

更新 06/05/2018

我为此向 Angular CLI 提出了一个问题,但尚未收到回复。问题 #11701