ডিরেক্টরি এবং তাদের ফাইলগুলি নির্বাচন এবং সরানোর জন্য গাল্প ব্যবহার করুন


99

আমি বর্তমানে ব্যাশ স্ক্রিপ্ট কল করতে গাল্প ব্যবহার করছি যা আমার dist/ডিরেক্টরিটি পরিষ্কার করে এবং উপযুক্ত ফাইলগুলি পরিষ্কার ডিরেক্টরিতে সরিয়ে দেয়। আমি এটি ঝাল দিয়ে সম্পন্ন করতে চাই কারণ আমি নিশ্চিত নই যে স্ক্রিপ্টটি একটি নন * এনক্স ফাইল সিস্টেমে কাজ করবে।
এখনও অবধি, আমি dist/ডিরেক্টরিটি পরিষ্কার করতে গল্প-ক্লিন মডিউলটি ব্যবহার করছি তবে যখন আমি প্রয়োজনীয় ডিরেক্টরিগুলি এবং তাদের ফাইলগুলি ডিস্ট ফোল্ডারে স্থানান্তরিত করার চেষ্টা করি, ডিরেক্টরিগুলি খালি থাকে।

var gulp = require('gulp'),
    clean = require('gulp-clean');

gulp.task('clean', function(){
  return gulp.src(['dist/*'], {read:false})
  .pipe(clean());
});

gulp.task('move',['clean'], function(){
  gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
  .pipe(gulp.dest('dist'));
});

gulp.task('dist', ['move']);

ডিরেক্টরিতে কলিংয়ের gulp distফলাফলগুলি dist/সঠিক ডিরেক্টরিতে পপুলেটেড হয় তবে সেগুলি সমস্ত খালি

$ ls dist/*
dist/manifest.json

dist/_locales:

dist/icons:

dist/page_action:

আমি কীভাবে ডিরেক্টরিগুলি এবং সেগুলির বিষয়বস্তু dist/ফোল্ডারে অনুলিপি করব ?

উত্তর:


163

আপনাকে এসআরসি-তে baseবিকল্প অন্তর্ভুক্ত করতে হবে যা ফাইল কাঠামোটি আপনার পছন্দ মতো সংরক্ষণ করবে:

var filesToMove = [
        './_locales/**/*.*',
        './icons/**/*.*',
        './src/page_action/**/*.*',
        './manifest.json'
    ];

gulp.task('move',['clean'], function(){
  // the base option sets the relative root for the set of files,
  // preserving the folder structure
  gulp.src(filesToMove, { base: './' })
  .pipe(gulp.dest('dist'));
});

এছাড়াও, আপনার প্রকল্পের মূলটিতে যদি এই সমস্ত উত্স ফাইল থাকে তবে আপনি সম্ভবত রাস্তায় সমস্যা হতে চলেছেন।

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

আপনি এই কাজ করতে, তাহলে কেবল এর সমস্ত সংঘটন প্রতিস্থাপন ./সঙ্গে src/উপরোক্ত উদাহরণে।


4
কেবলমাত্র ফাইলগুলি পুনর্গঠনের পরে পুরোপুরি কাজ করেছেন তবে আপনার যুক্তিটি যথাযথ তাই আমি আপনার উত্তরটিকে সঠিক হিসাবে চিহ্নিত করছি। ধন্যবাদ.
মাকেনোভা

4
বিপরীতে কাজ করতে, গুল্প-ফ্ল্যাটেন ব্যবহার করুন। স্ট্যাকওভারফ্লো.com
টনি গুতেরেস

4
অন্য কারও জন্য এটি নোট হিসাবে, নিশ্চিত হয়ে নিন যে আপনার কাছে readএসআরসি সেট করার বিকল্প নেই false(এটি trueডিফল্টরূপে সেট করা আছে )।
yndolok

4
যখন আমি এটি করি, এটি সম্পূর্ণ রুট ডিরেক্টরিগুলির সাথে অনুলিপি করছে।
Nomadme

5

মূল প্রশ্নটি এর মধ্যে কেবল ডিরেক্টরি (ওরফে ফোল্ডার) লক্ষ্য করে gulp.src, gulp.src(['_locales', ...উদাহরণস্বরূপ, _localesএকটি ডিরেক্টরিটির নাম ।

গৃহীত উত্তরগুলি সেই ডিরেক্টরিগুলির যে কোনও জায়গায় ফাইলকে লক্ষ্য করতে এর মধ্যে একটি globপ্যাটার্ন ব্যবহার করে , যেমন , ( ডাবল-অ্যাসিটারিকস এবং ফাইলের নাম.এক্সটেনশন অ্যাসিটার্কগুলি লক্ষ্য করুন)। গৃহীত উত্তর কাজ করে ...gulp.srcgulp.src(['./_locales/**/*.*', ...

... তবে গৃহীত উত্তরটি কেবলমাত্র baseবিকল্পটিতে জোর দেয় :

আপনাকে এসসিআর করার baseবিকল্পটি অন্তর্ভুক্ত করতে হবে ...

আমি পরীক্ষা করে দেখেছি:

  1. কড়া কথায় বলতে গেলে, baseওপি যা বলেছিল তা অর্জনের জন্য অপশনটি ব্যবহার করা অপ্রয়োজনীয় : "... এবং উপযুক্ত ফাইলগুলি পরিষ্কার ডিরেক্টরিতে সরিয়ে নিয়েছে।" baseবিকল্প নেই প্রকৃতপক্ষে সংরক্ষণ ফোল্ডারের + ফাইল কাঠামো (গৃহীত উত্তর বর্ণনা অনুযায়ী), কিন্তু baseবিকল্প যথেষ্ট নয় ফাইল স্থানান্তর করার জন্য যেমন ওপি জিজ্ঞাসা । ফোল্ডার + ফাইলের কাঠামো সংরক্ষণ করা সম্ভবত ওপি প্রত্যাশা করে , তাই গ্রহণযোগ্য উত্তরটি ভাল তবে ...

  2. শুধু পুনরাবৃত্তি করতে কি করে ফাইল সরানো, এটা globপ্যাটার্নস:

    1. ডাবল অস্ট্রিক ( .../**/...) সমস্ত সাবফোল্ডার এবং সাবফোল্ডারগুলির 'সাবফোল্ডার', ইত্যাদি জুড়ে পুনরাবৃত্তি অনুসন্ধান করে

    2. ফাইলনাম . এক্সটেনশন অ্যাসিরিস্টস ( .../*.*) সমস্ত নাম এবং সমস্ত এক্সটেনশনের ফাইলগুলি সন্ধান করেসুতরাং আমি এই অংশটি সবচেয়ে জোর দাবি!

  3. গৃহীত উত্তর অন্য কিছু পরিবর্তন করে; এটি ./পাস করা প্রতিটি পাথ আর্গুমেন্টের একটি উপসর্গ যুক্ত করে gulp.src। আমি মনে করি এটি অপ্রয়োজনীয় / অপ্রয়োজনীয়; যদি কোনও না থাকে ./(যেমন ওপি প্রশ্নে), পাথগুলি বর্তমান ডিরেক্টরি অনুসারে সমাধান করা হয় - ফলস্বরূপ একই আচরণের ফলে । তবে সম্ভবত এটির সাথে স্পষ্ট হওয়া ভাল অনুশীলন./

যদি আমার ভুল হয় তবে আমাকে জানাবেন ...

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