কৌণিক-ক্লাইম বিল্ড সহ কাস্টম ফাইলগুলি কীভাবে অন্তর্ভুক্ত করবেন?


113

পুনরায়: কৌণিক 2 2.0.0, কৌণিক-ক্লিপ v1.0.0-বিটা.11-ওয়েবপ্যাক 8

আমি কীভাবে কৌণিক-ক্লিটকে "ডিআরসি" / সম্পদ "থেকে কোনও ফাইল তৈরি করতে গিয়ে" ডিস্টের "মূলের মধ্যে অন্তর্ভুক্ত করতে বলি?

আমরা একটি উইন্ডোজ হোস্টে স্থাপন করি এবং আইআইএসকে সমস্ত সূচকে রুট করতে বলার জন্য একটি "ওয়েবকনফিগ" ফাইল অন্তর্ভুক্ত করা দরকার। আমরা এই প্রাক আরসি 4 করছিলাম, তবে সমস্ত আপডেট করার সাথে সাথে এটি ফাটল ধরেছিল (আমি কীভাবে এটি করেছি তা মনে নেই)।

আমি গিটহাব রেপো ডকগুলিকে ঝাঁকিয়েছি এবং এই বিষয়টিতে কোনও ব্যবহারের সন্ধান পাইনি। আমি কি ভুল জায়গায় আছি?

ইন ToC , একটি বুলেট পয়েন্ট "বিল্ড অতিরিক্ত ফাইল যোগ করার পদ্ধতি", কিন্তু এটা মনে হচ্ছে যে অধ্যায় বিদ্যমান নেই।


2
মূলত আপনি এনপিএম দিয়ে ফাইলগুলি অনুলিপি করতে পারেন। কেবল প্যাকেজ.জসনে স্ক্রিপ্টগুলিতে অনুলিপি কমান্ড যুক্ত করুন। এছাড়াও এই lucasmreis.github.io/blog/npm-is-an-amazing-build-tool দেখুন
ভাদিম সেন্টিয়ায়েভ

আমি যা করে শেষ করেছি (যা হ্যাকিও মনে হয়): একটি ফাইল অনুলিপি এনপিএম প্যাকেজ ইনস্টল করুন, তারপরে "প্যাকেজ.জসন" এর "স্ক্রিপ্ট" বিভাগে একটি মান যুক্ত করুন "copy:webConfig": "node node_modules/copy/bin/cli.js web.config dist"। আমিও একটি পোস্ট বিল্ড স্ক্রিপ্ট যোগ করেছেন: "postbuild": "npm run copy:webConfig"। অনুলিপিটি কাজ করার চেষ্টা করার পরে অন্যান্য সমস্যা ছিল, তবে এটি কৌশলটি করেছে।
কিজমার

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

এখানে উত্তরগুলি সঠিক, তবে আপনার যদি পরিবেশ অনুযায়ী আলাদা আলাদা ফাইলগুলি অনুলিপি করা প্রয়োজন তবে আমি পড়ার পরামর্শ দিচ্ছি: stackoverflow.com/a/59162533/3306960
ম্যানুয়েল লোপেরা

উত্তর:


147

কৌণিক-ক্লিপ.জসনের "সম্পদ" সম্পত্তি কৌনিক ফাইলগুলি কৌণিক-ক্লিপ ওয়েবপ্যাক বিল্ডে অন্তর্ভুক্ত করার জন্য কনফিগার করা যেতে পারে। সুতরাং, "সম্পদ" সম্পত্তি মানটিকে অ্যারে হিসাবে কনফিগার করুন। উদাহরণ স্বরূপ:

"assets": ["assets", "config.json",".htaccess"],

উপরের কনফিগারেশনটি কৌনিক-ক্লিপ ওয়েবপ্যাক বিল্ড চলাকালীন কনফিগারেশন.জেএসএন এবং .htaccess ডিস্ট ফোল্ডারে অনুলিপি করবে। উপরের সেটিংটি কৌণিক-ক্লাইপ সংস্করণ 1.0.0-beta.18 এ কাজ করেছে


6
"অ্যাপস" এর অধীনে থাকা প্রয়োজন, উদাহরণস্বরূপ: "অ্যাপস": [assets "সম্পদ": ["কনফিগারেশন / অ্যাপসকনফিগ.জসন"]}]
ম্যানি

দেখতে সত্য বলে মনে হচ্ছে, তবে আমার জন্য কাজ করছে না। "সম্পদ": "সম্পদ" এবং "সম্পদ": ["সম্পদ"] - কাজ, তবে "সম্পদ": ".htaccess", "সম্পদ": ["সম্পদ", ".htaccess"] - কাজ করে না। কোনও পরামর্শ?
গ্লেব

@gleb, "সম্পদ" এর মতো যুক্ত করুন: ["সম্পদ", ".htaccess"], আমি মনে করি এটি আপনার উদ্দেশ্যটি কার্যকর করবে।
মোঃ আইয়ুব আলী সরকার

@ এমডিএইউবআলিসার্কার, ধন্যবাদ, সমস্যাটি হ'ল আমি কৌণিক-ক্লিপ সংস্করণ 1.0.0-beta.17 ব্যবহার করেছি। 1.0.0-beta.19 আমার পক্ষে ভাল কাজ করে
Gleb

1
ঠিক আছে, এটি উপেক্ষা করুন, এটি একটি ধরণের ছিল - এটি কাজ করে। সুতরাং ওয়েবকনফাইগকে এসআরসি ফোল্ডারের মূলের মধ্যে যেতে হবে এবং তারপরে জেএসওএন ফাইলটি "সম্পদ": ["সম্পদ", "ওয়েবকনফিগ"],
রডনি

66

বর্তমান সঠিক উত্তর:

দলটি distআঙ্গুলের সিএলআইয়ের পরবর্তী সংস্করণে আউটপুট ফোল্ডারে ( ডিফল্টরূপে) নির্দিষ্ট ফাইলগুলি অনুলিপি করার জন্য সমর্থন যোগ করেছে (এটি বিটা 17 বা 19 হবে - এটি যুগের জন্য চূড়ান্ত 1.x প্রকাশে ছিল)।

আপনি এটিকে কেবল অ্যারেতে যুক্ত করুন angular-cli.json:

{
  ...
  "অ্যাপস" [
    {
       "রুট": "এসসিআর",
       "সম্পদ": [
         "সম্পদ",
         "Web.config"
       ],
       ...
    }
  ]
  ...
}

(লক্ষ্য করুন যে পথটি srcফোল্ডারের সাথে সম্পর্কিত)

আমি ব্যক্তিগতভাবে এটি ব্যবহার করি এবং এটি ঠিক কাজ করে।

বিটা ২৪ হিসাবে, আমি কৌণিক সিএলআইতে একটি বৈশিষ্ট্য যুক্ত করেছি যা নিশ্চিত করে যে সমস্ত assetsফাইল এবং ফোল্ডার কেবল ওয়েবপ্যাক ডেভ সার্ভার থেকে পরিবেশিত হচ্ছে ng testনা যখন কেবল চলবে না ng serve

এটি ইউনিট পরীক্ষার জন্য ওয়েবপ্যাক ডেভ সার্ভারে ব্যবহৃত সম্পদ ফাইলগুলি সরবরাহ করে ( ng test) serving
(যদি পরীক্ষার জন্য আপনার কিছু জেএসওএন ফাইলের প্রয়োজন হয় বা কনসোলে 404 সতর্কতা দেখতে ঘৃণা করা হয়)।
তারা ইতিমধ্যে পরিবেশন করা হয়েছে ng e2eকারণ এটি একটি পুরো চালায় ng serve

এবং এতে আরও উন্নত বৈশিষ্ট্য রয়েছে যেমন কোনও ফোল্ডার থেকে আপনার কী ফাইলগুলি ফিল্টার করা এবং আউটপুট ফোল্ডারের নাম উত্স ফোল্ডার থেকে পৃথক হওয়া:

{
  ...
  "অ্যাপস" [
    {
      "রুট": "এসসিআর",
      "সম্পদ": [
        "সম্পদ",
        "Web.config":
        {
          // এই ফোল্ডারে বিষয়বস্তু অনুলিপি করুন
          "ইনপুট": "../",
          // যা এই ওয়াইল্ডকার্ডের সাথে মেলে
          "গ্লোব": "* .কনফিগ",
          // এবং এগুলিকে এই ফোল্ডারে `ডিস্ট` ('।' এর অর্থ এটি সরাসরি` ডিস্টে রাখুন) এর নীচে রাখুন
          "আউটপুট": "।"
        }
      ],
      ...
    }
  ]
  ...
}

আপনি সরকারী ডকুমেন্টেশনগুলিও উল্লেখ করতে পারেন: কৌণিক গাইড - ওয়ার্কস্পেস কনফিগারেশন


[কেবলমাত্র আর্কাইভিংয়ের জন্য] আসল উত্তর (Oct অক্টোবর, ২০১)):

দুর্ভাগ্যক্রমে এটি বর্তমানে সমর্থিত নয় (বিটা -16 হিসাবে)। আমি দলে (ওয়েবকনফিগ ফাইলগুলি) যথাযথ উদ্বেগ উত্থাপন করেছি, তবে শীঘ্রই এটি কোনও সময়ের মধ্যে ঘটবে বলে মনে হচ্ছে না (যদি আপনি সিএলআই ইত্যাদি না জমান)।

সম্পূর্ণ আলোচনা এবং সম্ভাব্য ভবিষ্যতের বিশদগুলির জন্য এই সমস্যাটি অনুসরণ করুন।

পুনশ্চ

JSON ফাইলের জন্য, আপনি এটি লাগাতে পারেন ./src/assets/। এই ফোল্ডারটি কপি পরার হিসেবে হল ./dist/assets/। এটিই বর্তমান আচরণ।

এর আগে সিস্টেমজেএসের দিনগুলিতে আরও একটি ./public/ফোল্ডার ছিল যা ./dist/সরাসরি অনুলিপি করা হয়েছিল , তবে এটি ওয়েবপ্যাক সংস্করণে চলে গেছে, যা উপরের ইস্যুটি উপরে আলোচনা করা হয়েছে।


2
এই কনফিগারেশনটি আমার পক্ষে কাজ করেছে: {"গ্লোব": " * / ", "ইনপুট": "এসআরসি / সম্পদ", "আউটপুট": "/ সম্পদ"},
প্যাট্রিকবাডলে

7

একটি সমাধান (যদিও আমার মতে কিছুটা হ্যাক) আপনার main.tsফাইলটিতে এমন একটি ভেরিয়েবল ঘোষণা করা যা আপনাকে ওয়েবপ্যাক বিল্ড আউটপুটে অন্তর্ভুক্ত করতে চাইলে অতিরিক্ত ফাইলের প্রয়োজন হয়।

গো EX:

import './polyfills.ts';

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/';

/* HACK: Include standalone web.config file manually in webpack build
 *
 * Due to the way the beta angular-cli abstracts the webpack config files into
 * angular-cli.json and lacks current documentation we were unable to find
 * a way to include additional files manually in the webpack build output.
 *
 * For hosting on IIS we need to include a web.config file for
 * specifying rewrite rules to make IIS compatible with the Angular Router.
 * The one liner following this comment is a hack to accomplish this
 * and should be reviewed and corrected as soon as adequete documentation
 * is available for the angular-cli configuration file.
 */
const webConfig = require('file?name=[name].[ext]!./web.config');

if (environment.production) {
    enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);

ওয়েবপ্যাকটি যখন এই পরিবর্তনশীল ঘোষণা বিবৃতিটির সাথে মুখোমুখি হয় তখন বিল্ড আউটপুটটির অংশ হিসাবে main.tsকাঁচা web.configফাইলটি নির্গত করে :

                            Asset       Size  Chunks             Chunk Names
                       inline.map    5.59 kB       2  [emitted]  inline
                       web.config  684 bytes          [emitted]
                 styles.bundle.js    16.7 kB    1, 2  [emitted]  styles
                        inline.js    5.53 kB       2  [emitted]  inline
                         main.map    5.36 MB    0, 2  [emitted]  main
                       styles.map    22.6 kB    1, 2  [emitted]  styles
                   main.bundle.js    4.85 MB    0, 2  [emitted]  main
                       index.html    1.98 kB          [emitted]
                assets/.npmignore    0 bytes          [emitted]
         assets/styles/global.css    2.74 kB          [emitted]
Child html-webpack-plugin for "index.html":
         Asset     Size  Chunks       Chunk Names
    index.html  4.45 kB       0
webpack: bundle is now VALID.

ওয়েবপ্যাক কনফিগারেশনে একটি আদর্শ সমাধান হতে পারে, তবে কৌণিক- angular-cli.jsonক্লিপ কীভাবে এখনও পরিচালনা করে চলেছে তার কোনও মাথা বা লেজ তৈরি করতে পারি না (বিটা .১.1)।

সুতরাং কারও কাছে যদি এর থেকে আরও ভাল উত্তর থাকে যা একটি কৌণিক-ক্লাইম উত্পাদিত প্রকল্পের জন্য ওয়েবপ্যাক কনফিগারেশনকে প্রসারিত করে আমি এটি শুনতে পছন্দ করি।


5

কৌণিক 8 পাঠকদের জন্য ,

.htaccessহতে হবে src/.htaccess। নিচে দেখ,

 "assets": [
    "src/favicon.ico",
     "src/assets",
     "src/.htaccess"
  ],

নিশ্চিত করুন যে আপনি .htaccessফাইলটি srcআপনার প্রকল্পের ডিরেক্টরিতে রেখেছেন।

এবং যে ফাইলটি রাখতে হবে তা হ'ল angular.jsonনাangular-cli.json

(আপনার যদি কোনও বৈধ htaccessফাইলের প্রয়োজন হয় তবে আপনি এখানে একটি সন্ধান করতে পারেন - https://stackoverflow.com/a/57126352/767625 )

এটাই. আপনি যখন আঘাত করবেন তখন এটি এখন অনুলিপি করা উচিত ng build --prod=true

আশা করি এটি কাউকে সাহায্য করবে।

চিয়ার্স,


1
এবং ফাইলটি রাখতে হবে angular.jsonতা angular-cli.jsonপূর্বের উত্তরে উল্লিখিত নয় ।
এমমার্লিন

1

কৌণিক-ক্লাই.জসন ফাইলে একটি "স্ক্রিপ্ট" বিভাগ রয়েছে। আপনি সেখানে সমস্ত তৃতীয় পক্ষের জাভাস্ক্রিপ্ট ফাইল যুক্ত করতে পারেন।


1
হ্যাঁ, তবে ওয়েবকনফিগ কোনও জাভাস্ক্রিপ্ট ফাইল নয়। এটিও জেএস হওয়ার আশা না করে এবং অন্য জেএসের সাথে এটি বান্ডিল না করে অনুলিপি করবে?
কিজমার

@ কিজমার, হ্যাঁ, এটি কাজ করবে না। এটি জেএস হিসাবে লোড করার চেষ্টা করবে (এবং ব্যর্থ)।
নাথান কুপার

0

আমার ক্ষেত্রে আমি কৌণিক সংস্করণ 5 ব্যবহার করেছি , সুতরাং আমি যখন এনজি বিল্ড - প্রড কমান্ড চালাচ্ছিলাম তখন স্ট্যাটিকফিল.টেক্সট নামে একটি ফাইল তৈরি করার চেষ্টা করেছি । ফাইলটি এক্সটেনশন দেওয়ার বিষয়টি নিশ্চিত করুন, অন্যথায় এটি ফাইলটি তৈরি করবে না।


0

কৌণিক.জসন পরিবর্তন করুন।
সম্পদ অ্যারে এন্ট্রি যুক্ত করুন:

{
  "glob": "**/web.config",
  "input": "src/",
  "output": "./"
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.