如何在不使用CLI的情况下部署Angular2项目

时间:2016-10-28 09:50:49

标签: angular

这是我为角度2制作的项目所做的文件夹结构。我删除了Node-Module文件夹和其他文件夹,以便在此处使用。对于造型我只使用了Bootstrap。我没有使用过Angular-CLI。任何人都可以指导我如何部署它?我应该使用gulp吗?我的步骤应该是什么。我在stackoverflow上经历了很多答案,但都使用了GULP和CLI。是否必须同时使用两者,如果是这样,请指导如何实现部署。遗憾的是,在Anular2官方网站上没有提到有关部署的内容。欢迎任何帮助,指导和建议。

|--app
|   |-- logo.png
|   |-- components
|   |   |-- main.component.ts
|   |   |-- config.component.ts
|   |   |-- download-resources.component.ts
|   |   |-- header-footer.component.ts
|   |   |-- licence.component.ts
|   |   |-- menu-bar.component.ts
|   |   |-- process-status.component.ts
|   |   |-- release-history.component.ts
|   |   |-- upload-release.component.ts
|   |   `-- version.component.ts
|   |-- main
|   |   `--module.ts
|   |-- main.ts
|   |-- models
|   |   |-- config.model.ts
|   |   |-- meta-info.model.ts
|   |   |-- process-status.model.ts
|   |   `-- version.model.ts
|   |-- services
|   |   |-- cc-info.service.ts
|   |   |-- config.service.ts
|   |   |-- release-history.service.ts
|   |   |-- shared.service.ts
|   |   |-- upload-release.service.ts
|   |   `-- version.service.ts
|   `-- template
|       |-- download-resources.component.html
|       |-- licence.component.html
|       |-- license-info.component.html
|       |-- machines.component.html
|       |-- menu-bar.component.html
|       |-- process-status.component.html
|       |-- release-history.component.html
|       |-- topology-info.component.html
|       |-- topology-upload.template.html
|       |-- upload-release.component.html
|       `-- version.component.html
|-- index.html
|-- package.json
|-- styles.css
|-- systemjs.config.js
|-- tsconfig.json
`-- typings.json

这是我的system.config.js文件:

(function (global) {
  System.config({
    // DEMO ONLY! REAL CODE SHOULD NOT TRANSPILE IN THE BROWSER
    transpiler: 'ts',
    typescriptOptions: {
      tsconfig: true
    },
    meta: {
      'typescript': {
        "exports": "ts"
      }
    },
    paths: {
      // paths serve as alias
      'npm:': 'node_module'
    },
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: 'main-app',

      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
      '@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js',

      // other libraries
      'ng2-file-upload' : 'npm:ng2-file-upload',
      'rxjs':                      'npm:rxjs',
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api',
      'ts':                        'npm:plugin-typescript@4.0.10/lib/plugin.js',
      'typescript':                'npm:typescript@2.0.2/lib/typescript.js',

    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      app: {
        main: './main.ts',
        defaultExtension: 'ts'
      },
      rxjs: {
        defaultExtension: 'js'
      },
      'angular-in-memory-web-api': {
        main: './index.js',
        defaultExtension: 'js'
      },
      'ng2-file-upload':{
        main: 'ng2-file-upload.js',
        defaultExtension: 'js'
      }
    }
  });
})(this);

3 个答案:

答案 0 :(得分:3)

我通过使用webpack解决了这个问题。我的webpack创建了一个包含所有.js .ts .html文件的bundle.js,并将其转换为bundle.js。我在Index.html导入。这个bundle.js包含它运行所需的所有东西。我的网站需要的其他东西,如style.css和一些bootstrap库必须在index.html外部包含。 您需要遵循的步骤是:

  1. 包含" compression-webpack-plugin":" ^ 0.3.2" package.json中的package in dev-dependency
  2. 使用webpack时,请记住以下几点。您需要使用正确的语法在组件中导入模板,并且路由中的更改很少。
  3. 我在package.json中也改变了我的构建脚本。添加了webpack的代码

      

    " build":" npm run tsc&& npm run clean&& mkdir _dist&&的WebPack   --devtool inline-source-map",

  4. 您需要配置您的网络包。 webpack.config.js包含我所做的所有配置,它看起来像这样。

  5. var webpack = require("webpack");
    var CompressionPlugin = require("compression-webpack-plugin");  
    module.exports = {
    entry: {
     "app": "./app/main"
     },
            output: {
                path: __dirname,
                filename: "./_dist/bundle.js",
                publicPath: 'http://localhost:4242/app'
            },
     resolve: {
            extensions: ['', '.js', '.ts', '.html']
        },
        devtool: 'source-map',
        module: {
            loaders: [
                {
      test: /\.ts$/,
                    loaders: ['awesome-typescript-loader', 'angular2-template-loader']
                },
                {
                    test: /\.html$/,
                    loader: 'html'
                }
        ]
    },
    htmlLoader: {
        minimize: false
    },
    plugins: [
        new webpack.NoErrorsPlugin(),
    ],
    devServer: {
        historyApiFallback: true,
     stats: 'minimal',
            inline: true,
            port: 4242
        }
    }
    

答案 1 :(得分:2)

最后Angular的人听了我的问题并提出了一个非常广泛的解决方案。他们更新了他们的网站,并在他们的网站中包含了上述步骤。请仔细阅读以获得适当的指导enter image description here

答案 2 :(得分:1)

TLDR回答:查看Angular2 Quickstart Docs并了解一切是如何运作的,然后找出要用于构建项目的内容以满足您的需求。如果您只是练习,请按照教程并尝试组合。我还建议您尝试tour of heroes tutorial添加说明。

我遇到了同样的问题我不知道如何从Angular2开始,因为它似乎涉及很多步骤。此外,您在网上找到的许多项目都非常有限。在大多数情况下,它们只是关于如何使用systemjs和CLI任务开始在前端使用angular2的教程 - 这些很好,因为它们有助于了解启动应用程序所需的内容或处理您可能遇到的任何问题。

已经说过,最佳构建对于您想要做的事情以及您希望如何构建项目是主观的。例如,我自己采用了Gulp方法,因为它是一个我熟悉的工具,除了输入gulp之外不想做任何cli。这样做的缺点是没有教程说明如何拼凑并以我想要的方式运行Angular2,并且增加了难以绑定适合我需要的后端。

我知道这可能不是你想要的答案,而是把它作为小费。为了理解你想要做什么,请按照Docs的方式使用Angular 2,并注意他们如何构建项目以及一切如何相互作用。当你这样做时,忽略了所有其他有关Gulp或其他人正在使用的构建的信息;确保你了解你的需要。从那里我建议你学习你的技能和其他工具的知识,以建立一个更强大的包,可以满足你的需求和你想要完成的任务。此外,如果您想逐步进行,Angular tour of heroes tutorial非常具有描述性,是一种很好的入门方式。