【问题标题】:Angular2 + webpack do not deploy robots.txtAngular2 + webpack 不部署 robots.txt
【发布时间】:2017-05-28 10:52:48
【问题描述】:

我正在使用 Angular2@2.1.2 创建一个网站。 我正在使用具有默认设置的 Webpack(作为依赖项)。

这是我的 package.json

"dependencies": {
"@angular/common": "2.1.2",
"@angular/compiler": "2.1.2",
"@angular/core": "2.1.2",
"@angular/forms": "2.1.2",
"@angular/http": "2.1.2",
"@angular/platform-browser": "2.1.2",
"@angular/platform-browser-dynamic": "2.1.2",
"@angular/platform-server": "2.1.2",
"@angular/router": "3.1.2",
"@ngrx/core": "1.2.0",
"@ngrx/effects": "2.0.0",
"@ngrx/store": "2.2.1",
"angular2-toaster": "^1.0.1",
"awesome-typescript-loader": "2.2.1",
"bootstrap": "3.3.7",
"bootstrap-select": "1.11.2",
"eonasdan-bootstrap-datetimepicker": "4.17.42",
"es5-shim": "4.5.9",
"intl": "1.2.5",
"jquery": "3.1.0",
"moment": "2.15.1",
"ng2-modal": "0.0.21",
"ng2-pagination": "^0.4.1",
"ngrx-store-logger": "^0.1.7",
"npm": "3.9.3",
"reflect-metadata": "0.1.8",
"rxjs": "5.0.0-beta.12",
"ts-helpers": "1.1.1",
"zone.js": "0.6.25"
},
"devDependencies": {
"@types/jasmine": "2.2.34",
"angular-cli": "1.0.0-beta.19-3",
"codelyzer": "~0.0.26",
"core-js": "2.4.1",
"jasmine-core": "2.5.0",
"jasmine-spec-reporter": "2.7.0",
"karma": "1.3.0",
"karma-chrome-launcher": "2.0.0",
"karma-coverage": "1.1.1",
"karma-jasmine": "1.0.2",
"karma-phantomjs-launcher": "1.0.2",
"karma-remap-istanbul": "0.2.1",
"karma-verbose-reporter": "0.0.3",
"node-sass": "3.10.3",
"protractor": "4.0.5",
"ts-node": "1.3.0",
"tslint": "3.15.1",
"typescript": "2.0.2"
}

我在 assets/ 目录中添加了一个 robots.txt 文件。我在想构建器(npm build)会识别这个文件并将它放在应用程序的根目录下,但它没有,它仍然在 assets 目录中。

我错过了什么吗?

谢谢。

【问题讨论】:

    标签: angular webpack robots.txt


    【解决方案1】:

    我在这个问题上找到了我的解决方案:https://github.com/angular/angular-cli/issues/1942

    robots.txt 在 src/ 目录下
    修改 angular-cli.json

    "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": ["assets", "robots.txt"],
     ....
    

    使用assets数组来声明你想放在dist/根目录下的文件

    【讨论】:

      【解决方案2】:

      我使用 Angular6 完成了这项工作。

      将您的 robots.txt 放在 src 文件夹中,与 favicon.ico 相同。

      在你的 angular.json 文件中

                    "assets": [
                    "src/favicon.ico",
                    "src/assets",
                    "src/robots.txt"
                  ],
      

      你可能需要再次ng服务,然后指向http://localhost:4200/robots.txt

      【讨论】:

      • 如果我正在缓存所有未知路由(路径:'**'),我该怎么办?我应该为 robots.txt 添加路由吗?
      • 我刚刚尝试了我的一个应用程序,似乎正在使用 Angular 通用服务器端渲染处理 Angular 10.1.1。它没有问题(路径:''),我建议更新您的答案,删除“这仅在您没有捕获路由器模块中的所有未知路由(路径:'')时才有效(s)." 句。
      【解决方案3】:

      我希望我的robots.txt 位于我的src/assets 文件夹中,而不仅仅是src。我发现将以下内容添加到assets 数组中的angular.json 可以解决问题:

      "assets": [
        "src/favicon.ico",
        "src/assets",
        {
          "glob": "robots.txt",
          "input": "src/assets",
          "output": "./"
        }
      ],
      

      使用 Angular Universal/SSR 在 Angular 10 中工作。

      【讨论】:

        猜你喜欢
        • 2017-04-01
        • 2017-01-16
        • 2022-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 2016-11-21
        相关资源
        最近更新 更多