如何从Angular 6中的打字稿插件生成资产

时间:2018-08-31 10:32:45

标签: angular typescript angular-cli

上下文

将Angular 4 + Angular种子迁移到Angular 6 + Angular CLI

问题

我正在使用SystemJS在组件之一内部动态加载插件

SystemJS.import("client/plugins/" + this.pluginElement.type + "/" + this.pluginElement.type + ".js")

如果我实际运行该应用程序,则可以:

http://localhost/client/plugins/dapChart/dapChart.js 404 (Not Found)

实际上,js文件不作为资产存在。

在src / client / plugins文件夹中,有一组用Typescript编写的模块,可以在应用程序中自由使用。

我想找到一种方法来告诉angular CLI编译我的plugins文件夹,并将结果视为资产并像复制到dist文件夹中一样复制它。

选项

在我的脑海中,我看到3种选择(如果其中任何一种都没有,则没有任何证据):

  • 检查如何自定义构建Angular-cli https://codeburst.io/customizing-angular-cli-6-build-an-alternative-to-ng-eject-a48304cd3b21 但是我是一个全新的人,会花很多时间检查一下
  • 手动编译plugins文件夹,并将其放入“ pluginCompiled”文件夹中,并使用

    在Angular.json中将其声明为Assets
     tsc -p src/client/plugins --outDir src/client/assets/plugins
    

    但是停止发球,编译然后重新启动ng发球非常烦人

  • 在Angular.json中创建一个子项目(工作区),该子项目将编译插件并将其放入“ pluginCompiled”中

问题

如何使用Angular 6 / Angular CLI将已编译的插件放入构建输出目录中

1 个答案:

答案 0 :(得分:0)

我实际上忘记了我自己是怎么做的,但是您可以添加cli配置文件。

在angular-cli中,您可能会执行以下操作:

  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "client": [ "plugins": [ ] ], //something like this
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
    }