【问题标题】:angular-cli for webpack does not really work用于 webpack 的 angular-cli 并没有真正起作用
【发布时间】:2017-01-05 22:03:39
【问题描述】:

我正在使用“angular-cli”:“1.0.0-beta.11-webpack.2”

我的 angular-cli-build.js 我有:

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'systemjs/dist/system-polyfills.js',
      'systemjs/dist/system.src.js',
      'zone.js/dist/**/*.+(js|js.map)',
      'es6-shim/es6-shim.js',
      'reflect-metadata/**/*.+(ts|js|js.map)',
      'rxjs/**/*.+(js|js.map)',
      '@angular/**/*.+(js|js.map)',
      'bootstrap/dist/css/bootstrap.css'
    ]
  });
};

还有我的 index.html:

<link rel="stylesheet" type="text/css" href="vendor/bootstrap/dist/css/bootstrap.min.css">

但是使用 ng build,我在 /dist 文件夹中什么也没有……这如何与 webpack 完全配合?我曾经很容易使用 webpack 和 angular 1,现在我发现它真的很复杂,我浪费了很多时间试图猜测它必须如何工作,我看到 angular-cli 只是用于测试,而不是用于实际工作?有没有办法用旧方式替换 angular-cli compile 以用 webpack 覆盖它?

【问题讨论】:

  • 我的建议,它不是将 angular-cli 用于实际工作或简单的应用程序,您可能会花费很多天和几个小时来尝试安装。不使用 webpack 的版本不专业而且非常不稳定,所以对于真正的生产来说,最好找一个启动器并手动完成,你会像我一样节省很多时间和时间。
  • Web 包的版本是黑暗的,你是囚徒,东西和配置在核心内部而不是简单的 Web 包配置,你是 beta 版本和程序员决定的囚徒,我不是至少今年会使用它

标签: angular-cli


【解决方案1】:

如果您升级到1.0.0-beta.11-webpack.3 或更高版本,您可以使用angular-cli.jsonapps[0].styles 属性列出要导入的外部样式表。有了这个,您不必向index.html 添加任何内容。

要从1.0.0-beta.11-webpack.2 升级,运行:

npm uninstall -g angular-cli
npm cache clean
npm install -g angular-cli@1.0.0-beta.11-webpack.3

https://github.com/angular/angular-cli#updating-angular-cli 开始,升级现有项目时在项目目录中运行的附加步骤是:

rm -rf node_modules dist tmp
npm install --save-dev angular-cli@latest
ng init

如果您生成一个新项目并安装 Bootstrap,您的 angular-cli.json 应该如下所示:

{
  "project": {
    "version": "1.0.0-beta.11-webpack.3",
    "name": "demo"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": "assets",
      "index": "index.html",
      "main": "main.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.json",
      "prefix": "app",
      "mobile": false,
      "styles": [
        "styles.css",
        "../node_modules/bootstrap/dist/css/bootstrap.min.css"
      ],
      "scripts": [],
      "environments": {
        "source": "environments/environment.ts",
        "prod": "environments/environment.prod.ts",
        "dev": "environments/environment.dev.ts"
      }
    }
  ],
  "addons": [],
  "packages": [],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "prefixInterfaces": false,
    "lazyRoutePrefix": "+"
  }
}

【讨论】:

  • 不同的人,同样的问题——我尝试升级到webpack.3,但它并没有解决我加载全局样式的问题。我更新了我的 angular-cli.json 文件,使其看起来也像您显示的那样。还有其他需要更改的文件吗?还是我应该从一个新项目重新开始并复制我现有的代码?提前致谢!
  • @TheManiac 升级现有项目请参阅此处的步骤:github.com/angular/angular-cli#updating-angular-cli
  • @TheManiac angular-cli@latest 现在会给你1.0.0-beta.11-webpack.8。您可以运行npm dist-tag ls angular-cli 来查看当前@latest 分发标记指向的内容。
  • @TheManiac 你是对的,我的错! angular-cli@latest 给你1.0.0-beta.10,这不是 webpack 之一。 angular-cli@webpack 为您提供 1.0.0-beta.11-webpack.8(最新的 webpack 版本),我发现它比 1.0.0-beta.11-webpack.3 有更多错误,因此我在回答中推荐了这个版本。
  • @TheManiac 听起来像this issue 打字稿2.0.2。在package.json 中将"typescript": "^2.0.0" 更改为"typescript": "2.0.0" 并运行npm install 为我修复了它。
【解决方案2】:

我发现使用 angular-cli 非常不稳定,最好使用 webstarte 并手动执行操作,今年 angular 2 候选版本正在发生变化,而且速度很慢,对于 angular-cli 来说最糟糕

https://github.com/preboot/angular2-webpack

使用 bootstrap4 css 的步骤:

1. npm install --save bootstrap@^4.0.0-alpha.3
2. in app.component.ts just insert:

import 'bootstrap/dist/css/bootstrap.css';

一切都很神奇并且有效:

一切都是自动的,没有像 angular-cli 这样的问题,我不建议最后使用它来构建应用程序,只是为了生成组件或这样想; angular-cli 确实是非常 beta 状态的开发。

【讨论】:

  • 以后遇到这个问题的人,我们应该说 angular-cli 已经走了很长一段路,现在也是 Angular 开发过程中使用的“推荐”工具。要回答原始问题,您可以将 Angular 中的资产直接添加到 angular-cli.json 配置文件中。当您输入 ng new [project name] 时,请查看默认的示例。
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多