npm link 不适用于 angular-cli 创建的项目
npm link is not working with angular-cli created projects
我使用 angular-cli
创建了一个项目。有一个 AppModule
和 AppComponent
我想在其他 angular 应用程序中使用这个 AppModule
及其组件 (AppComponent
)。所以我创建了 index.ts
文件并导出了 AppModule
和 AppComponent
export {AppModule} from './src/app/app.module';
export {AppComponent} from './src/app/app.component';
然后使用 npm link
创建本地 linking 并使用 package.json 中定义的名称创建 link。
现在在我想使用这个导出模块的其他项目中 运行
npm link project-name
链接已成功完成。
我试过了
import { AppModule as AModule} from 'my-components';
但这不起作用,因为 webpack 无法编译 AppModule 文件,因为引用未得到解析。在 SystemJs 中,我们在 systemjs.config.js 文件中定义了它的映射,但没有配置文件。
我该如何解决这个问题?
有没有其他方法可以重用本地模块?
这是目前的热门话题,似乎还没有完全解决。我得到以下信息:
链接由 angular 客户端创建的库并不那么容易。您可以阅读文档
https://github.com/angular/angular-cli/wiki/stories-linked-library
我能够按照 nimaen 在此 post https://github.com/angular/angular-cli/issues/3875
中提供的评论使其工作
--BR
丹尼斯
你做不到。让我引用
We don't support Library building with the CLI right now. We do
support linking libraries built properly inside a CLI application.
将以下内容添加到您要将 npm 链接库加载到的主机应用程序的 tsconfig.json
中。
"paths": {
"@angular/*": ["node_modules/@angular/*"]
}
显然链接包不能正常使用对等依赖。这将强制库使用您应用的 node_modules/@angular/* 库,这就是您 npm install
库时发生的情况。
它现在可以在您的 angular.json 中使用 "preserveSymlinks": true
。
只需将其添加到此处:项目 > 架构师 > 构建。
在Angular7、"preserveSymlinks": true
它对我有用:项目 > 架构师 > 构建 > 选项
您可以将指向项目的链接拖放到 tsconfig.js
文件中,以获取您想要以源代码形式使用的任何模块。
请注意,模块别名必须是指向不带 ts
或 js
扩展名的 TypeScript 文件的指针,而不是指向 package.json
文件目录的指针。
{
"compilerOptions": {
...
"paths": {
"my-third-party-package": [
// Can be project root relative path or abs path on your hd
"projects/my-third-party-package/src/index"
],
}
},
}
我使用 angular-cli
创建了一个项目。有一个 AppModule
和 AppComponent
我想在其他 angular 应用程序中使用这个 AppModule
及其组件 (AppComponent
)。所以我创建了 index.ts
文件并导出了 AppModule
和 AppComponent
export {AppModule} from './src/app/app.module';
export {AppComponent} from './src/app/app.component';
然后使用 npm link
创建本地 linking 并使用 package.json 中定义的名称创建 link。
现在在我想使用这个导出模块的其他项目中 运行
npm link project-name
链接已成功完成。 我试过了
import { AppModule as AModule} from 'my-components';
但这不起作用,因为 webpack 无法编译 AppModule 文件,因为引用未得到解析。在 SystemJs 中,我们在 systemjs.config.js 文件中定义了它的映射,但没有配置文件。
我该如何解决这个问题?
有没有其他方法可以重用本地模块?
这是目前的热门话题,似乎还没有完全解决。我得到以下信息:
链接由 angular 客户端创建的库并不那么容易。您可以阅读文档
https://github.com/angular/angular-cli/wiki/stories-linked-library
我能够按照 nimaen 在此 post https://github.com/angular/angular-cli/issues/3875
中提供的评论使其工作--BR 丹尼斯
你做不到。让我引用
We don't support Library building with the CLI right now. We do support linking libraries built properly inside a CLI application.
将以下内容添加到您要将 npm 链接库加载到的主机应用程序的 tsconfig.json
中。
"paths": {
"@angular/*": ["node_modules/@angular/*"]
}
显然链接包不能正常使用对等依赖。这将强制库使用您应用的 node_modules/@angular/* 库,这就是您 npm install
库时发生的情况。
它现在可以在您的 angular.json 中使用 "preserveSymlinks": true
。
只需将其添加到此处:项目 > 架构师 > 构建。
在Angular7、"preserveSymlinks": true
它对我有用:项目 > 架构师 > 构建 > 选项
您可以将指向项目的链接拖放到 tsconfig.js
文件中,以获取您想要以源代码形式使用的任何模块。
请注意,模块别名必须是指向不带 ts
或 js
扩展名的 TypeScript 文件的指针,而不是指向 package.json
文件目录的指针。
{
"compilerOptions": {
...
"paths": {
"my-third-party-package": [
// Can be project root relative path or abs path on your hd
"projects/my-third-party-package/src/index"
],
}
},
}