উত্পাদনের জন্য কীভাবে একটি কৌনিক অ্যাপ্লিকেশন বান্ডিল করবেন


353

লাইভ ওয়েব সার্ভারে উত্পাদনের জন্য কৌণিক (সংস্করণ 2, 4, 6, ...) বান্ডিল করার সর্বোত্তম পদ্ধতি কী?

দয়া করে উত্তরের মধ্যে কৌনিক সংস্করণ অন্তর্ভুক্ত করুন যাতে এটি পরে প্রকাশে সঞ্চারিত হলে আমরা আরও ভাল ট্র্যাক করতে পারি।


আপাতত (আরসি 1)। এখানে কয়েকটি সমাধান স্ট্যাকওভারফ্লো
প্যাট এম


আরসি 3 এখন একটি বান্ডিল ফাইল ফাইল সরবরাহ করে যা অনুরোধের সংখ্যা 300+ থেকে প্রায় 40 এ কমিয়ে দেয়
প্যাট এম

2
আরে। আমি ওয়েবপ্যাকগুলিও ঘৃণা করি এবং সাধারণভাবে পদক্ষেপগুলি তৈরি করি। একটি সাধারণ ওয়েবসাইটকে একসাথে ছুঁড়ে ফেলার চেষ্টা করার জন্য ওভারকিলের বাছাই করুন। এইভাবে আমি এটি তৈরি করেছি: github.com/schungx/angular2-bundle
স্টিফেন চুং

ধন্যবাদ স্টিফেন এটি বিক্রেতাদের অংশের জন্য একটি সহজ সমাধান হবে। এটি প্রত্যাশিত অফিশিয়ালি অফার এবং আপডেট করা যেতে পারে। আমি মনে করি আপনি প্রকল্পের ফাইলগুলির জন্য গুলপের মতো কিছু ব্যবহার করছেন?
প্যাট এম

উত্তর:


361

2.x, 4.x, 5.x, 6.x, 7.x, 8.x, 9.x (টাইপস্ক্রিপ্ট) কৌনিক সিএলআই সহ

এককালীন স্থাপনা

  • npm install -g @angular/cli
  • ng new projectFolder একটি নতুন অ্যাপ্লিকেশন তৈরি করে

বান্ডিলিং পদক্ষেপ

  • ng build --prod(ডিরেক্টরি থাকলে কমান্ড লাইনে রান করুন projectFolder)

    prodউত্পাদনের জন্য পতাকা বান্ডেল ( উত্পাদনের পতাকার সাথে অন্তর্ভুক্ত বিকল্পের তালিকার জন্য কৌনিক ডকুমেন্টেশন দেখুন )।

  • নিম্নলিখিত কমান্ডটি ব্যবহার করে ব্রোটলি সংক্ষেপণগুলি ব্যবহার করে সংকোচন করুন

    for i in dist/*; do brotli $i; done

প্রোজেক্টফোল্ডার / ডিস্টে (/ $ প্রোজেক্ট ফোল্ডার 6 এর জন্য) বান্ডিলগুলি ডিফল্টরূপে উত্পন্ন হয়

আউটপুট

9.0.0সিএলআই সহ কৌণিক সহ মাপ 9.0.1এবং কৌণিক রাউটিং ছাড়াই সিএসএস বিকল্প

  • dist/main-[es-version].[hash].jsআপনার অ্যাপ্লিকেশনটি বান্ডিল করেছে [ES5 আকার: নতুন কৌণিক সিএলআই অ্যাপ্লিকেশন খালি জন্য 158 কেবি, 40 কেবি সংক্ষেপিত]।
  • dist/polyfill-[es-version].[hash].bundle.jsপলিফিল নির্ভরতা (@ অংগুলার, আরএক্সজেএস ...) বান্ডিল হয়েছে [ইএস 5 আকার: নতুন কৌণিক সিএলআই অ্যাপ্লিকেশন খালি জন্য 127 কেবি, 37 কেবি সঙ্ক্রিত]।
  • dist/index.html আপনার আবেদনের প্রবেশ বিন্দু।
  • dist/runtime-[es-version].[hash].bundle.js ওয়েবপ্যাক লোডার
  • dist/style.[hash].bundle.css শৈলীর সংজ্ঞা
  • dist/assets অ্যাঙ্গুলার সিএলআই সম্পদ কনফিগারেশন থেকে অনুলিপি করা সংস্থানগুলি

বিস্তৃতি

ng serve --prodস্থানীয় এইচটিটিপি সার্ভার শুরু করার জন্য কমান্ডটি ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটির পূর্বরূপ পেতে পারেন যেমন উত্পাদন ফাইল সহ অ্যাপ্লিকেশনটি http: // লোকালহস্ত: 4200 ব্যবহার করে অ্যাক্সেসযোগ্য ।

উত্পাদন ব্যবহারের জন্য, আপনাকে distফোল্ডার থেকে সমস্ত ফাইল আপনার পছন্দের HTTP সার্ভারে স্থাপন করতে হবে ।


এনপিএম ইনস্টল -g কৌণিক-ক্লিপ @ ওয়েবপ্যাক চালানোর সময় আমি ত্রুটি পেয়েছি: এনপিএম ইআরআর! যে কোনও সমর্থন অনুরোধ সহ নিম্নলিখিত ফাইলটি অন্তর্ভুক্ত করুন: .... \ npm-debug.log। আপনি কি জানেন কি হচ্ছে?
চং ওয়াং

2
@ ক্রিসমারেক্স এটির এইচটিএমএল এবং শৈলীর সাথে সমস্ত উপাদান সহ একটি মাত্র বান্ডিল উত্পাদন করে।
নিকোলাস হেনাওক্স

4
আমার একটি অ্যাপ্লিকেশন ছিল এবং আমি এই পদ্ধতিটি ব্যবহার করতে চেয়েছিলাম, তাই আমি প্রকল্প ফোল্ডার থেকে এনজি ডি চালু করি। আমি বাকি পদক্ষেপগুলি করেছি তবে আমি যখন আমার অ্যাপ্লিকেশনগুলি স্থাপন করি তখন এটি খালি মনে হয়। কেবলমাত্র একটি জিনিস "অ্যাপ কাজ করে!" বার্তা, সেখানে আমার অ্যাপ্লিকেশন ফাইলগুলি কোথায় নিয়ে যেতে হবে তা নির্ধারণ করতে কোনও জায়গা রয়েছে?
মাট্রোক

2
এনজি-আরআই কে কৌণিক চক্র থেকে সরানো হয়েছে। github.com/angular/angular-cli/issues/5176
প্যাট এম

2
অবশেষে আমি এটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করেছি। যদিও অন্যান্য সমাধানগুলি পাশাপাশি কাজ করতে পারে এবং কিছু অতিরিক্ত নমনীয়তাও সরবরাহ করতে পারে (আমি সিএলআই ছাড়াই ওয়েবপ্যাক ব্যবহারের বিষয়ে পোস্ট করেছি)। কৌণিক সিএলআই ব্যবহার করা নিশ্চিতভাবেই মাথাব্যাথা কম দেয়। আমি কৌনিক সিএলআই ব্যবহার করে এবং আমার প্রকল্পটি অভিযোজিত করে শেষ করেছি যাতে আমি আরও সহজেই এওটি ব্যবহার করতে পারি।
প্যাট এম

57

2.0.1 Final গুল্প ব্যবহার করে (টাইপস্ক্রিপ্ট - টার্গেট: ইএস 5)


এককালীন স্থাপনা

  • npm install (ডিরেক্টরি প্রকল্পের ফোল্ডার হলে সেমিডিতে চালিত হবে)

বান্ডিলিং পদক্ষেপ

  • npm run bundle (ডিরেক্টরি প্রকল্পের ফোল্ডার হলে সেমিডিতে চালিত হবে)

    প্রকল্প ফোল্ডার / বান্ডেল / এ বান্ডিলগুলি উত্পাদিত হয়

আউটপুট

  • bundles/dependencies.bundle.js[ আকার: MB 1 এমবি (যতটা সম্ভব ছোট)]
    • পুরো ফ্রেমওয়ার্কগুলিতে নয়, rxjs এবং কৌণিক নির্ভরতা রয়েছে
  • bundles/app.bundle.js[ আকার: আপনার প্রকল্পের উপর নির্ভর করে , খনিটি ~ 0.5 এমবি ]
    • আপনার প্রকল্প রয়েছে

ফাইল স্ট্রাকচার

  • প্রোজেক্টফোল্ডার / অ্যাপ / (সমস্ত উপাদান, নির্দেশাবলী, টেম্পলেট ইত্যাদি)
  • প্রকল্পফোল্ডার / gulpfile.js

var gulp = require('gulp'),
  tsc = require('gulp-typescript'),
  Builder = require('systemjs-builder'),
  inlineNg2Template = require('gulp-inline-ng2-template');

gulp.task('bundle', ['bundle-app', 'bundle-dependencies'], function(){});

gulp.task('inline-templates', function () {
  return gulp.src('app/**/*.ts')
    .pipe(inlineNg2Template({ useRelativePaths: true, indent: 0, removeLineBreaks: true}))
    .pipe(tsc({
      "target": "ES5",
      "module": "system",
      "moduleResolution": "node",
      "sourceMap": true,
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "removeComments": true,
      "noImplicitAny": false
    }))
    .pipe(gulp.dest('dist/app'));
});

gulp.task('bundle-app', ['inline-templates'], function() {
  // optional constructor options
  // sets the baseURL and loads the configuration file
  var builder = new Builder('', 'dist-systemjs.config.js');

  return builder
    .bundle('dist/app/**/* - [@angular/**/*.js] - [rxjs/**/*.js]', 'bundles/app.bundle.js', { minify: true})
    .then(function() {
      console.log('Build complete');
    })
    .catch(function(err) {
      console.log('Build error');
      console.log(err);
    });
});

gulp.task('bundle-dependencies', ['inline-templates'], function() {
  // optional constructor options
  // sets the baseURL and loads the configuration file
  var builder = new Builder('', 'dist-systemjs.config.js');

  return builder
    .bundle('dist/app/**/*.js - [dist/app/**/*.js]', 'bundles/dependencies.bundle.js', { minify: true})
    .then(function() {
      console.log('Build complete');
    })
    .catch(function(err) {
      console.log('Build error');
      console.log(err);
    });
});
  • প্রজেক্টফোল্ডার / প্যাকেজ.জসন ( কুইকস্টার্ট গাইডের মতোই , কেবল বান্ডিল করার জন্য ডিভডিপেন্ডেন্স এবং এনপিএম-স্ক্রিপ্টগুলি দেখানো হয়েছে)

{
  "name": "angular2-quickstart",
  "version": "1.0.0",
  "scripts": {
    ***
     "gulp": "gulp",
     "rimraf": "rimraf",
     "bundle": "gulp bundle",
     "postbundle": "rimraf dist"
  },
  "license": "ISC",
  "dependencies": {
    ***
  },
  "devDependencies": {
    "rimraf": "^2.5.2",
    "gulp": "^3.9.1",
    "gulp-typescript": "2.13.6",
    "gulp-inline-ng2-template": "2.0.1",
    "systemjs-builder": "^0.15.16"
  }
}

(function(global) {

  // map tells the System loader where to look for things
  var map = {
    'app':                        'app',
    'rxjs':                       'node_modules/rxjs',
    'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
    '@angular':                   'node_modules/@angular'
  };

  // packages tells the System loader how to load when no filename and/or no extension
  var packages = {
    'app':                        { main: 'app/boot.js',  defaultExtension: 'js' },
    'rxjs':                       { defaultExtension: 'js' },
    'angular2-in-memory-web-api': { defaultExtension: 'js' }
  };

  var packageNames = [
    '@angular/common',
    '@angular/compiler',
    '@angular/core',
    '@angular/forms',
    '@angular/http',
    '@angular/platform-browser',
    '@angular/platform-browser-dynamic',
    '@angular/router',
    '@angular/router-deprecated',
    '@angular/testing',
    '@angular/upgrade',
  ];

  // add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' }
  packageNames.forEach(function(pkgName) {
    packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
  });

  var config = {
    map: map,
    packages: packages
  };

  // filterSystemConfig - index.asp's chance to modify config before we register it.
  if (global.filterSystemConfig) { global.filterSystemConfig(config); }

  System.config(config);

})(this);
  • projetcFolder / dist-systemjs.config.js (সবেমাত্র সিস্টেমjs.config.json এর সাথে পার্থক্য দেখানো হয়েছে)

var map = {
    'app':                        'dist/app',
  };
  • প্রোজেক্টফোল্ডার / সূচক। html (উত্পাদন) - স্ক্রিপ্ট ট্যাগ ক্রম সমালোচনা। dist-systemjs.config.jsবান্ডিল ট্যাগগুলির পরে ট্যাগ স্থাপনের পরেও প্রোগ্রামটি চলতে দেওয়া হত তবে নির্ভরতা বান্ডিলটিকে উপেক্ষা করা হবে এবং node_modulesফোল্ডার থেকে নির্ভরতা লোড করা হবে ।

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
  <base href="/"/>
  <title>Angular</title>
  <link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>

<my-app>
  loading...
</my-app>

<!-- Polyfill(s) for older browsers -->
<script src="node_modules/core-js/client/shim.min.js"></script>

<script src="node_modules/zone.js/dist/zone.min.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.js"></script>

<script src="dist-systemjs.config.js"></script>
<!-- Project Bundles. Note that these have to be loaded AFTER the systemjs.config script -->
<script src="bundles/dependencies.bundle.js"></script>
<script src="bundles/app.bundle.js"></script>

<script>
    System.import('app/boot').catch(function (err) {
      console.error(err);
    });
</script>
</body>
</html>
  • প্রোজেক্টফোল্ডার / অ্যাপ / বুট.এসটি হ'ল বুটস্ট্র্যাপ st

আমি এখনও করতে পারেন সেরা :)


2
হাই, গল্প স্ক্রিপ্টটি বান্ডিল তৈরি করছে, তবে আমি নিশ্চিত না যে বুট.এসটি ফাইলের মধ্যে কী হওয়া উচিত? সব ফাইল কি এখন বান্ডলে নেই? আমরা কি বান্ডিল কার্যকর করি?
ক্রিসমার্ক

2
হু, আমার ধারণা আমার আবার চেষ্টা করা দরকার। আমি বিল্ডার.বিল্ডস্ট্যাটিকটিতে স্যুইচ করার চেষ্টা করেছি এবং একটি কমনজ বা এমডি মডিউল হিসাবে লোড না হওয়ার বিষয়ে rxjs থেকে ত্রুটি পেয়েছি। আমি আপনার পরামর্শটি আবার চেষ্টা করব
ক্রিসমার্কস

1
আমি এও অস্পষ্ট যে এই সেটআপটিতে বান্ডিলগুলি আসলে কীভাবে ব্যবহৃত হয়? আমি এখানে @ ক্রিসমার্কের মতো ঠিক একই সমস্যাগুলিতে চলে আসছি বলে মনে হচ্ছে। আমি বান্ডিলগুলি তৈরি করতে পারি, তবে তারপরে মনে হয় আমার ট্রান্সপ্লায়ড এবং অনুলিপি করা অ্যাপ্লিকেশন ফোল্ডার (ডিস্ট / অ্যাপে অবস্থিত) থেকে সমস্ত কিছু এখনও লোড হচ্ছে। আমি যদি আমার নেটওয়ার্ক প্যানেলে দেখি তবে দেখতে পাচ্ছি যে আমার অ্যাপ্লিকেশন সম্পর্কিত ফাইলগুলি আসলে app.bundle.js থেকে আসা সমস্ত অ্যাপের পরিবর্তে সেখান থেকে (উপাদানগুলি ইত্যাদি) লোড হচ্ছে। আ_সিংহ, আপনি কি আপনার বুট.টি ভাগ করতে পারবেন? দেখে মনে হচ্ছে আমি এখানে কিছু মিস করছি এবং কিছু ব্যাখ্যা পছন্দ করব।
jbgarr

1
আ_সিংহ, আমি দেখছি না এটি কীভাবে সহায়তা করে। এটি যখন inline-templatesচালানো হয় তখন টেমপ্লেটগুলি ইনলাইন করে তারপরে সমস্ত অ্যাপ ফোল্ডার এবং ফাইলগুলির একটি অনুলিপি তৈরি করে dist/app। তারপর dist-systemjs.config.jsআপনি মানচিত্রে appকরতে dist/appযা একটি ফোল্ডার যে যদি আপনি ব্যবহার থাকবে না হয় distরুট হিসাবে ফোল্ডার। আপনি কি আপনার অ্যাপ্লিকেশনটি distফোল্ডার থেকে চালাতে চান না ? এবং যদি এটি হয় তবে আপনার কাছে distফোল্ডারটি রুট distফোল্ডারে নেই। আমি অবশ্যই এখানে অন্য কিছু মিস করছি। আপনার বান্ডিলযুক্ত ফাইলগুলি ব্যবহার করার জন্য সিস্টেমজগুলিকে বলার দরকার নেই dist/appফোল্ডারে থাকা সাধারণ ফাইলগুলি নয় ?
jbgarr

1
আমি আপনার সমাধানটির সাথে একটি সমস্যার মুখোমুখি হয়েছি, বুট এমন একটি জিনিস যা এখানে বিদ্যমান নেই এবং আমি যখন এটি "অ্যাপ" দ্বারা প্রতিস্থাপন করি তখন আমি ত্রুটিযুক্ত "মডিউলটি সংজ্ঞায়িত হয় না"।
LoïcR

22

ওয়েবপ্যাক সহ কৌণিক 2 (সিএলআই সেটআপ ব্যতীত)

1- অ্যাঙ্গুলার 2 টিম টিউটোরিয়াল

অ্যাঙ্গুলার 2 টিম ওয়েবপ্যাক ব্যবহারের জন্য একটি টিউটোরিয়াল প্রকাশ করেছিল

আমি টিউটোরিয়াল থেকে ফাইলগুলি তৈরি করেছি এবং একটি ছোট গিটহাব বীজ প্রকল্পে রেখেছি । সুতরাং আপনি দ্রুত ওয়ার্কফ্লো চেষ্টা করতে পারেন।

নির্দেশাবলী :

  • এনপিএম ইনস্টল

  • এনপিএম শুরু । উন্নয়নের জন্য। এটি একটি ভার্চুয়াল "ডিস" ফোল্ডার তৈরি করবে যা আপনার লোকালহোস্ট ঠিকানায় লাইভলোড করা হবে।

  • এনপিএম রান বিল্ড । উত্পাদনের জন্য। "এটি কোনও ওয়েবসার্ভারে প্রেরণের চেয়ে একটি শারীরিক" ডিস "ফোল্ডার সংস্করণ তৈরি করবে dist

2 - একটি ওয়েবকিট স্টার্টার কিট

এই ওয়েবপ্যাক স্টার্টার কিট উপরের টিউটোরিয়ালের চেয়ে আরও কয়েকটি পরীক্ষামূলক বৈশিষ্ট্য সরবরাহ করে এবং বেশ জনপ্রিয় বলে মনে হয়।


হাই, কৌনিক 2.1.0 দিয়ে বীজ প্রকল্পটি আপডেট করা সম্ভব? টিউটোরিয়ালটি এখন কৌনিক 2.1.0 ব্যবহার করছে। আমি এটি অনুসরণ করেছিলাম এবং এটি কাজ করতে পারি না। ত্রুটিটি হ'ল http 404 - app.componal.html খুঁজে পাচ্ছে না।
heq99

আমি সমস্যা ছাড়াই কৌনিক 2.1.0 এ আপডেট করেছি updated app.componal.html কে app.componal.ts (টেম্পলেট ইউআরএল: './app.componal.html') থেকে ডাকা হয়েছে। আপনার কাছে একই অ্যাপ ফোল্ডারে দুটি ফাইল আছে?
প্যাট এম

1
আপনি যখন উত্পাদনের জন্য যান তখন গাছের কাঁপানো, ম্যানিফিকেশন এবং গিজিপিং আকারটি হ্রাস করতে পারে। উদাহরণস্বরূপ এখানে একটি দুর্দান্ত পঠন রয়েছে, blog.mgechev.com/2016/06/26/…
হামজীন হামিম

16

সিস্টেমজেস বিল্ডার এবং গাল্প সহ কৌণিক 2 উত্পাদনের কার্যপ্রবাহ

Angular.io এর দ্রুত শুরু করার টিউটোরিয়াল রয়েছে। আমি এই টিউটোরিয়ালটি অনুলিপি করে ডিস্ট ফোল্ডারে যা কিছুটা সার্ভারে অনুলিপি করা যায় এবং ঠিক তেমনভাবে কাজ করা যায় তার জন্য বান্ডিল করার জন্য কিছু সাধারণ গল্প টাস্কের সাথে প্রসারিত করেছি। আমি জেনকিস সিআই-তে ভাল কাজ করার জন্য সবকিছুকে অনুকূলিত করার চেষ্টা করেছি, তাই নোড_মডিউলগুলি ক্যাশে করা যায় এবং অনুলিপি করার দরকার নেই।

গিথুবে নমুনা অ্যাপ্লিকেশন সহ উত্স কোড: https://github.com/Anjmao/angular2- উত্পাদনের- ফ্লো

উত্পাদন পদক্ষেপ
  1. ক্লিন টাইপস স্ক্রিপ্টগুলি জেএস ফাইল এবং ডিস্ট ফোল্ডার সংকলিত
  2. অ্যাপ্লিকেশন ফোল্ডারের ভিতরে টাইপস্ক্রিপ্ট ফাইলগুলি সংকলন করুন
  3. ব্রাউজার ক্যাশে রিফ্রেশের জন্য উত্পন্ন হ্যাশগুলির সাথে ফোল্ডারটিকে দূরে রাখতে সমস্ত কিছু বান্ডিল করতে সিস্টেমজেস বান্ডিলার ব্যবহার করুন
  4. বান্ডিল্ড সংস্করণ সহ সূচক html স্ক্রিপ্টগুলি প্রতিস্থাপন করতে গুল্প-এইচটিএমএল-প্রতিস্থাপন ব্যবহার করুন এবং ডিস্ট ফোল্ডারে অনুলিপি করুন
  5. ডিস্ট ফোল্ডারে সম্পদ ফোল্ডারের ভিতরে থাকা সমস্ত কিছু অনুলিপি করুন

নোড : আপনি সর্বদা নিজের বিল্ড প্রক্রিয়াটি তৈরি করতে পারবেন তবে আমি কৌণিক-ক্লাইটি ব্যবহার করার জন্য অত্যন্ত পরামর্শ দিচ্ছি কারণ এটির প্রয়োজনীয় সমস্ত কর্মপ্রবাহ রয়েছে এবং এটি এখন পুরোপুরি কার্যকর হয়। আমরা ইতিমধ্যে এটি উত্পাদনে ব্যবহার করছি এবং কৌণিক-ক্লিমে কোনও সমস্যা নেই।


এই আমি খুঁজছি। গিথুবের উপর নমুনা অ্যাপ্লিকেশনটি খুব দরকারী। ধন্যবাদ
শাহরিয়ার হাসান

14

কৌণিক সিএলআই 1.xx (কৌণিক 4.XX, 5.xx এর সাথে কাজ করে)

এটি সমর্থন করে:

  • কৌণিক 2.x এবং 4.x
  • সর্বশেষ ওয়েবপ্যাক 2.x
  • কৌণিক এওটি সংকলক
  • রাউটিং (স্বাভাবিক এবং অলস)
  • SCSS
  • কাস্টম ফাইল বান্ডিলিং (সম্পদ)
  • অতিরিক্ত বিকাশ সরঞ্জাম (লিন্টার, ইউনিট এবং শেষ থেকে শেষের জন্য টেস্ট সেটআপগুলি)

প্রাথমিক সেটআপ

এনজি নতুন প্রকল্পের নাম - রাউটিং

আপনি --style=scssSASS .scss সমর্থন যোগ করতে পারেন ।

আপনি --ng4কৌণিক 2 এর পরিবর্তে কৌনিক 4 ব্যবহারের জন্য যুক্ত করতে পারেন ।

প্রকল্পটি তৈরি করার পরে, সিএলআই স্বয়ংক্রিয়ভাবে npm installআপনার জন্য চালিত হবে । আপনি যদি এর পরিবর্তে সুতাটি ব্যবহার করতে চান, বা কেবল ইনস্টল না করেই প্রকল্পের কঙ্কালের দিকে চেয়ে দেখতে চান, এখানে এটি কীভাবে করবেন তা পরীক্ষা করে দেখুন

বান্ডিল পদক্ষেপ

প্রকল্প ফোল্ডারের ভিতরে:

এনজি বিল্ড-প্রড

বর্তমান সংস্করণে আপনাকে --aotম্যানুয়ালি নির্দিষ্ট করতে হবে, কারণ এটি বিকাশ মোডে ব্যবহার করা যেতে পারে (যদিও এটি স্বচ্ছলতার কারণে ব্যবহারিক নয়)।

এটি এমনকি আরও ছোট বান্ডিলগুলির জন্যও AOT সংকলন সম্পাদন করে (কোনও কৌণিক সংকলক, পরিবর্তে, উত্পন্ন সংকলক আউটপুট নয়)। আপনি উত্পাদিত কোডটি আরও ছোট হিসাবে কৌনিক 4 ব্যবহার করলে বান্ডিলগুলি এওটির সাথে অনেক ছোট।
আপনি আপনার অ্যাপ্লিকেশনটি এওটি দিয়ে ডেভলপমেন্ট মোডে (সোর্স ম্যাপস, কোনও মিনিফিকেশন) এবং এওটি চালিয়ে পরীক্ষা করতে পারেন ng build --aot

আউটপুট

ডিফল্ট আউটপুট dir হয় ./dist , যদিও এটিতে পরিবর্তন করা যায় ./angular-cli.json

স্থাপনযোগ্য ফাইল

বিল্ড স্টেপের ফলাফল নিম্নলিখিত:

(দ্রষ্টব্য: <content-hash>ফাইলের বিষয়বস্তুর হ্যাশ / ফিঙ্গারপ্রিন্টকে বোঝায় যা ক্যাশে বুস্টিংয়ের উপায় হতে পারে, ওয়েবপ্যাক scriptনিজেই ট্যাগ লেখার পরে এটি সম্ভব )

  • ./dist/assets
    ফাইলগুলি অনুলিপি করা হয়েছে from ./src/assets/**
  • ./dist/index.html
    থেকে ./src/index.html, এতে ওয়েবপ্যাক স্ক্রিপ্টগুলি যুক্ত করার পরে
    উত্স টেম্পলেট ফাইলটি কনফিগারযোগ্য./angular-cli.json
  • ./dist/inline.js
    ছোট ওয়েবপ্যাক লোডার / পলিফিল
  • ./dist/main.<content-hash>.bundle.js
    মূল .js ফাইলটি সমস্ত .js স্ক্রিপ্টগুলি তৈরি / আমদানি করে
  • ./dist/styles.<content-hash>.bundle.js
    আপনি যখন সিএসএসের জন্য ওয়েবপ্যাক লোডারগুলি ব্যবহার করেন, যা সি এল এল উপায়, সেগুলি এখানে জেএসের মাধ্যমে লোড করা হয়

পুরানো সংস্করণগুলিতে এটি তাদের আকার এবং .mapউত্স ম্যাপ ফাইলগুলি যাচাই করার জন্য জিপিড সংস্করণগুলি তৈরি করেছে , তবে লোকেদের এগুলি সরাতে বলার ফলে এটি আর ঘটছে না।

অন্যান্য ফাইল

কিছু অন্যান্য অনুষ্ঠানে, আপনি অন্যান্য অযাচিত ফাইল / ফোল্ডার খুঁজে পেতে পারেন:

  • ./out-tsc/
    থেকে ./src/tsconfig.jsonএরoutDir
  • ./out-tsc-e2e/
    থেকে ./e2e/tsconfig.jsonএরoutDir
  • ./dist/ngfactory/
    এওটি সংকলক থেকে (বিটা 16 হিসাবে সিএলআই না দিয়ে কনফিগারযোগ্য নয়)

আমার অ্যাপ্লিকেশন থেকে কৌনিক lib এবং তাদের নির্ভরতা পৃথক করা সম্ভব?
ডোমিনিক পিগানেল

গাছের কাঁপানো কাজ করার উদ্দেশ্যে যা সিএলআই ব্যবহার করছে না। এটি আপনার অ্যাপ্লিকেশনে ব্যবহৃত হয় না এমন সমস্ত কৌণিক একমাস্ক্রিপ্ট মডিউলগুলি সরিয়ে দিচ্ছে। গতির জন্য এটি ডেভ মোডে অক্ষম করার পরিকল্পনা রয়েছে (তারা "ডিএলএল" হিসাবে বোঝানো লাইব্রেরিগুলিকে কল করে) তবে শেষের ফলাফলে আলাদা করার কোনও পরিকল্পনা নেই। আপনি যদি নিজের নিজস্ব ওয়েবপ্যাক স্টাফগুলি সিএলআই ছাড়াই রোল করে থাকেন তবে এটি অর্জনযোগ্য হবে।
মেলিগি

ডিস্ট ফোল্ডার ব্যবহার করে কীভাবে আমার অ্যাপটি চেক করবেন। আমি কীভাবে আমার ওয়েব সার্ভারে হোস্ট করব?
রাজ মি

আপনি কেবল এটি সার্ভারে অনুলিপি করুন। এটি প্লেইন স্ট্যাটিক ওয়েবসাইট যা কোনওভাবেই পরিবেশন করা যায়। আপনি রাউটিং ব্যবহার করেন, তাহলে আপনার উপর সার্ভার কনফিগারেশন অধ্যায় যে চেক কৌণিক স্থাপনার docss জন্য, যদিও HTML ফাইলে সব কল পুনর্নির্দেশ করতে চাইতে পারেন angular.io/docs/ts/latest/guide/...
Meligy

@ মেলিগি যদি আমি প্রোডের বান্ডিলগুলি <content-hash>থেকে সরিয়ে ফেলি তবে কী হবে । এটি সর্বশেষ বান্ডিল পেতে সমস্যা হতে পারে?
k11k2

5

আজ অবধি আমি এখনও উত্পাদন বান্ডিলিংয়ের সেরা রেসিপি হিসাবে সামনের সময়ের সংকলন কুকবুকটি পাই। আপনি এখানে এটি পেতে পারেন: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html

অ্যাঙ্গুলার 2 এর সাথে আমার এখনও পর্যন্ত অভিজ্ঞতা হল যে এওটি প্রায় কোনও লোডিং সময় না দিয়ে ক্ষুদ্রতম বিল্ডগুলি তৈরি করে। এবং এখানে গুরুত্বপূর্ণ প্রশ্নটি হিসাবে গুরুত্বপূর্ণ - আপনার কেবলমাত্র কয়েকটি ফাইল উত্পাদন করতে পাঠানো প্রয়োজন।

এটি দেখে মনে হচ্ছে কারণ কৌণিক সংকলকটি উত্পাদন বাড়ানোর সাথে প্রেরণ করা হবে না কারণ টেমপ্লেটগুলি "সময়ের পূর্বে" সংকলিত হয়েছে। আপনার এইচটিএমএল টেমপ্লেট মার্কআপটিকে জাভাস্ক্রিপ্ট নির্দেশাবলীতে রূপান্তরিত করে দেখতে খুব শীতল হয়েছে যা প্রকৃত এইচটিএমএলে প্রকৌশলীকে বিপরীত করা খুব কঠিন hard

আমি একটি সাধারণ ভিডিও তৈরি করেছি যেখানে আমি দেব বনাম এওটি বিল্ডে অ্যাংুলার 2 অ্যাপের জন্য ডাউনলোডের আকার, ফাইলের সংখ্যা ইত্যাদি প্রদর্শন করি - যা আপনি এখানে দেখতে পারেন:

https://youtu.be/ZoZDCgQwnmQ

আপনি ভিডিওটিতে ব্যবহৃত উত্স কোডটি এখানে পাবেন:

https://github.com/fintechneo/angular2-templates


3
        **Production build with

         - Angular Rc5
         - Gulp
         - typescripts 
         - systemjs**

        1)con-cat all js files  and css files include on index.html using  "gulp-concat".
          - styles.css (all css concat in this files)
          - shims.js(all js concat in this files)

        2)copy all images and fonts as well as html files  with gulp task to "/dist".

        3)Bundling -minify angular libraries and app components mentioned in systemjs.config.js file.
         Using gulp  'systemjs-builder'

            SystemBuilder = require('systemjs-builder'),
            gulp.task('system-build', ['tsc'], function () {
                var builder = new SystemBuilder();
                return builder.loadConfig('systemjs.config.js')
                    .then(function () {
                        builder.buildStatic('assets', 'dist/app/app_libs_bundle.js')
                    })
                    .then(function () {
                        del('temp')
                    })
            });


    4)Minify bundles  using 'gulp-uglify'

jsMinify = require('gulp-uglify'),

    gulp.task('minify', function () {
        var options = {
            mangle: false
        };
        var js = gulp.src('dist/app/shims.js')
            .pipe(jsMinify())
            .pipe(gulp.dest('dist/app/'));
        var js1 = gulp.src('dist/app/app_libs_bundle.js')
            .pipe(jsMinify(options))
            .pipe(gulp.dest('dist/app/'));
        var css = gulp.src('dist/css/styles.min.css');
        return merge(js,js1, css);
    });

5) In index.html for production 

    <html>
    <head>
        <title>Hello</title>

        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta charset="utf-8" />

       <link rel="stylesheet" href="app/css/styles.min.css" />   
       <script type="text/javascript" src="app/shims.js"></script>  
       <base href="https://stackoverflow.com/">
    </head>
     <body>
    <my-app>Loading...</my-app>
     <script type="text/javascript" src="app/app_libs_bundle.js"></script> 
    </body>

    </html>

 6) Now just copy your dist folder to '/www' in wamp server node need to copy node_modules in www.

2

আপনি কৌণিক-ক্লিপ-গ্যাজেজগুলিgithub ব্যবহার করে আপনার কৌণিক অ্যাপ্লিকেশন স্থাপন করতে পারেন

এই ক্লায়েন্টটি ব্যবহার করে কীভাবে মোস্ত করা যায় তা জানতে লিঙ্কটি দেখুন।

মোতায়েন করা ওয়েবসাইটটি githubসাধারণত কিছু শাখায় সংরক্ষণ করা হবে

GH-পৃষ্ঠাগুলি

ব্যবহার গিট শাখা ক্লোন করতে পারে এবং এটি আপনার সার্ভারে স্থির ওয়েবসাইটের মতো ব্যবহার করতে পারে


1

"সেরা" দৃশ্যের উপর নির্ভর করে। এমন অনেক সময় আসে যখন আপনি কেবলমাত্র ছোট্ট সম্ভাব্য একক বান্ডিলটি যত্নশীল হন, তবে বড় অ্যাপগুলিতে আপনাকে অলস লোডিং বিবেচনা করতে হতে পারে। এক পর্যায়ে পুরো অ্যাপ্লিকেশনটিকে একক বান্ডিল হিসাবে পরিবেশন করা অবৈধ হয়ে ওঠে।

পরবর্তী ক্ষেত্রে ওয়েবপ্যাকটি সাধারণত সেরা উপায় কারণ এটি কোড বিভাজনকে সমর্থন করে।

একটি বান্ডিলের জন্য আমি রোলআপ, বা বন্ধ সংকলক বিবেচনা করব যদি আপনি সাহসী বোধ করেন :-)

আমি এখানে ব্যবহার করেছি এমন সমস্ত কৌণিক বান্ডিলারের নমুনা তৈরি করেছি: http://www.syntaxsuccess.com/viewarticle/angular-

কোডটি এখানে পাওয়া যাবে: https://github.com/thelgevold/angular-2- উদাহরণ

কৌণিক সংস্করণ: 4.1.x


0

ওয়েবপ্যাক 3 সহ কেবলমাত্র কৌনিক 4 সেটআপ করুন এক মিনিটের মধ্যে আপনার বিকাশ এবং উত্পাদন ENV বান্ডেল কোনও সমস্যা ছাড়াই প্রস্তুত হয়ে উঠবে কেবল নীচের গিথুব ডক অনুসরণ করুন

https://github.com/roshan3133/angular2-webpack-starter


0

বর্তমান প্রকল্প ডিরেক্টরিতে CLI কমান্ডের নীচে চেষ্টা করুন। এটি ডিস্ট ফোল্ডার বান্ডিল তৈরি করবে। যাতে আপনি মোস্তকের জন্য ডিস্ট ফোল্ডারের মধ্যে সমস্ত ফাইল আপলোড করতে পারেন।

এনজি বিল্ড - প্রোড --aot --base-href।


0

এনজি সার্ভ বিকাশের উদ্দেশ্যে আমাদের অ্যাপ্লিকেশনটি পরিবেশন করার জন্য কাজ করে। উত্পাদন সম্পর্কে কি? আমরা যদি আমাদের প্যাকেজ.জসন ফাইলটি খতিয়ে দেখি, আমরা দেখতে পাচ্ছি যে স্ক্রিপ্টগুলি আমরা ব্যবহার করতে পারি:

"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build --prod",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e"
},

বিল্ড স্ক্রিপ্টটি - প্রোড পতাকা সহ কৌণিক সিএলআইয়ের এনজি বিল্ড ব্যবহার করে। আসুন এখন এটি চেষ্টা করুন। আমরা এটি দুটি উপায়ে একটি করতে পারি:

# এনপিএম স্ক্রিপ্ট ব্যবহার করে

npm run build

# সরাসরি ক্লাইটি ব্যবহার করছে

ng build --prod

এবার আমাদের পাঁচটির পরিবর্তে চারটি ফাইল দেওয়া হয়েছে। - প্রোড পতাকাটি আমাদের অ্যাপ্লিকেশনটিকে আকারে আরও ছোট করতে কৌণিককে বলে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.