2 votes

Inclure le fichier de licence dans un environnement de production uniquement en utilisant angular-cli

J'utilise une bibliothèque tierce dans mon projet. La bibliothèque tierce fournit deux licences. Une licence de développement et une licence de production. Les fichiers de licence sont des fichiers java script.

J'utilise anglular-cli pour construire mon projet.

Je veux évidemment que mes constructions de développement soient renvoyées avec la licence de développement. Cependant, lorsque la version de production est lancée (drapeau --prod), je veux que la licence de production soit incluse. J'aimerais savoir comment faire cela.

Voici les détails de mon environnement

@angular/cli: 1.2.0
node: 6.10.3
os: win32 x64

Comme on le voit ci-dessous dans le fichier .angular-cli.json, la licence est incluse dans la section scripts.

"scripts": [
      "./assets/js/cloak.js",
      "../license.js"

Voici mon fichier .angular-cli.json complet.

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "cricinfo-ui"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico",
        "cloak.json",
        "environment.json",
        "cricinfo.png"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      "styles": [
        "styles.css"
      ],
      "scripts": [
      "./assets/js/cloak.js",
      "../license.js"

      ],"environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "src/tsconfig.app.json"
    },
    {
      "project": "src/tsconfig.spec.json"
    },
    {
      "project": "e2e/tsconfig.e2e.json"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

1voto

simon Points 1621

Vous devez utiliser environment.ts y environment.prod.ts fichiers. Importez la licence correspondante dans chaque fichier et le tour est joué.

import '../relative/path/to/the/license.js';

Le seul problème serait que lorsque vous utilisez -prod le fichier de licence peut être considéré comme inutile et être exclu de la compilation. Cependant, cela ne devrait pas être un problème dans la plupart des cas.

Un autre moyen est d'enregistrer une deuxième application dans votre liste d'utilisateurs. .angular-cli.json et passer des licences différentes là-bas. Mais cela représente trop de frais généraux par rapport à la première méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X