Gulp.src () এ বর্তমান ফাইলের নাম পান


138

আমার gulp.js ফাইলে আমি examplesফোল্ডার থেকে সমস্ত HTML ফাইল ফোল্ডারে স্ট্রিমিং করছি build

গল্প কাজ তৈরি করা কঠিন নয়:

var gulp = require('gulp');

gulp.task('examples', function() {
    return gulp.src('./examples/*.html')
        .pipe(gulp.dest('./build'));
});

তবে টাস্কে পাওয়া ফাইলগুলির নাম (এবং প্রক্রিয়াজাতকরণ) কীভাবে পুনরুদ্ধার করা যায় তা আমি বুঝতে পারি না বা সঠিক প্লাগইনটি খুঁজে পাচ্ছি না।


আপনি যদি নিজের সমস্যার সমাধান করে থাকেন তবে আপনার নিজের উত্তরটি নীচে পোস্ট করা উচিত। সমাধানের সাথে আপনার প্রশ্নটি কেবল সম্পাদনা করা উচিত নয়
অ্যান্ড্রু মার্শাল

2
@ অ্যান্ড্রুমারশাল ... সম্পাদনা সম্পর্কে আমার মন্তব্য হিসাবে, যে আপনি মুছে ফেলেছেন, ব্যাখ্যা করেছেন, আমি সঠিক উত্তর খুঁজে পাওয়ার জন্য দাবি করতে চাই না তবে উত্তরের উত্তরটি ক্রেডিট দিতে চাই। এজন্য আমি উত্তর হিসাবে ছোট পরিবর্তনটি পোস্ট করি নি। আপনি যদি ভাবেন যে, আমার সম্পাদনা সরিয়ে ফেলা ব্যবহারকারীদের পক্ষে ভাল (বা কেবল এই সাইটের নিয়ম মেনে চলে) তবে আমি তার সাথে ঠিক আছি। অন্য কারও জন্য, সম্পাদনা ইতিহাসে ক্লিক করুন আগে কী ছিল তা দেখতে।
dkastl

উত্তর:


174

আপনি কীভাবে ফাইলের নাম ব্যবহার করতে চান তা নিশ্চিত নই তবে এর মধ্যে একটিরও সহায়তা করা উচিত:

  • আপনি যদি কেবল নামগুলি দেখতে চান তবে আপনি এমন কিছু ব্যবহার করতে পারেন gulp-debugযা ভিনাইল ফাইলের বিশদ তালিকাভুক্ত করে। আপনি যে কোনও তালিকা চাইলেই এটি Inোকান, যেমন:

    var gulp = require('gulp'),
        debug = require('gulp-debug');
    
    gulp.task('examples', function() {
        return gulp.src('./examples/*.html')
            .pipe(debug())
            .pipe(gulp.dest('./build'));
    });
  • আরেকটি বিকল্প হ'ল gulp-filelog, যা আমি ব্যবহার করি নি, তবে অনুরূপ শোনায় (এটি কিছুটা ক্লিনার হতে পারে)।

  • আরেকটি বিকল্প হ'ল gulp-filesize, যা ফাইল এবং এর আকার উভয়কেই আউটপুট করে।

  • আপনি যদি আরও নিয়ন্ত্রণ চান তবে আপনি এমন কিছু ব্যবহার করতে পারেন gulp-tapযা আপনাকে নিজের ফাংশন সরবরাহ করতে দেয় এবং পাইপের ফাইলগুলি দেখতে দেয়।


7
ধন্যবাদ! "লগ" প্লাগইনগুলি যেখানে আমি যা খুঁজছিলাম তা নয়, কারণ এটি কেবল কনসোল লগকেই লিখে। তবে gulp-tapপ্রতিটি ফাইলের জন্য পাথ পেতে দেয়, তাই আমি এটি অন্য একটি HTML ফাইলে আমার তালিকা আপডেট করার জন্য ব্যবহার করতে পারি।
dkastl

আমি যদি সমস্ত এসসিআর ফাইলগুলিকে একটি অ্যারেতে সঞ্চয় করতে চাই তবে কী হবে? ডিবাগ অনেকগুলি বিকল্প দেয় না।
অভিনব সিঙ্গি

22

আমি এই প্লাগইনটি যা প্রত্যাশা করছিলাম তা করে যাচ্ছিলাম: গল্প-ব্যবহার

সাধারণ ব্যবহারের উদাহরণ: প্রকল্পে সমস্ত ফাইল .jsx এক্সটেনশান সহ অনুসন্ধান করুন

gulp.task('reactify', function(){
        gulp.src(['../**/*.jsx']) 
            .pipe(using({}));
        ....
    });

আউটপুট:

[gulp] Using gulpfile /app/build/gulpfile.js
[gulp] Starting 'reactify'...
[gulp] Finished 'reactify' after 2.92 ms
[gulp] Using file /app/staging/web/content/view/logon.jsx
[gulp] Using file /app/staging/web/content/view/components/rauth.jsx

গুল্প-ইউজিং যা আমি অনেক ধন্যবাদ খুঁজছিলাম তা করল।
sghosh968

10

এখানে আরও একটি সহজ উপায়।

var es, log, logFile;

es = require('event-stream');

log = require('gulp-util').log;

logFile = function(es) {
  return es.map(function(file, cb) {
    log(file.path);
    return cb();
  });
};

gulp.task("do", function() {
 return gulp.src('./examples/*.html')
   .pipe(logFile(es))
   .pipe(gulp.dest('./build'));
});

5
আপনি জানেন, বেশিরভাগ লোকেরা কফিসিপিটি জানেন না, তাই সর্বাধিক সংখ্যক পাঠকের পক্ষে
সুনির্দিষ্ট

আমার জন্য es.mapএকটি ত্রুটি ছুড়ে SyntaxError: Unexpected token .
ফেলেছে

1
এই সমাধানের জন্য +1 (প্লাগিন ছাড়া)। তবে একটি বাগ আছে, পরিবর্তে return cb(); এটি হওয়া উচিত cb(null, file);। অন্যথায় ফাইলগুলি ফিল্টার করা হবে এবং পাইপের শৃঙ্খলে আরও নামবে না। আরও তথ্য es.map ()
দিমিত্রি কে

5

পাথের অ্যারে পেতে আপনি গুল্প-ফাইলনাম মডিউলটি ব্যবহার করতে পারেন । আপনি এমনকি এটিকে নেমস্পেসে গ্রুপ করতে পারেন:

var filenames = require("gulp-filenames");

gulp.src("./src/*.coffee")
    .pipe(filenames("coffeescript"))
    .pipe(gulp.dest("./dist"));

gulp.src("./src/*.js")
  .pipe(filenames("javascript"))
  .pipe(gulp.dest("./dist"));

filenames.get("coffeescript") // ["a.coffee","b.coffee"]  
                              // Do Something With it 

3

আমার ক্ষেত্রে gulp- উপেক্ষা নিখুঁত ছিল। বিকল্প হিসাবে আপনি সেখানে একটি ফাংশন পাস করতে পারেন:

function condition(file) {
 // do whatever with file.path
 // return boolean true if needed to exclude file 
}

এবং টাস্কটি দেখতে এইরকম হবে:

var gulpIgnore = require('gulp-ignore');

gulp.task('task', function() {
  gulp.src('./**/*.js')
    .pipe(gulpIgnore.exclude(condition))
    .pipe(gulp.dest('./dist/'));
});

0

আপনি যদি টাইপ স্ক্রিপ্টে @ ওভারজিলিয়াস উত্তর ( https://stackoverflow.com/a/21806974/1019307 ) ব্যবহার করতে চান তবে আপনার importপরিবর্তে এগুলি করা দরকার require:

import * as debug from 'gulp-debug';

...

    return gulp.src('./examples/*.html')
        .pipe(debug({title: 'example src:'}))
        .pipe(gulp.dest('./build'));

(আমি একটি যুক্তও করেছি title)।


এর importপরিবর্তে কেন require?
vsync

হ্যাঁ আমি জানি না। এটি আমার জেএস বিকাশের প্রথম দিনগুলিতে ছিল এবং প্রতিচ্ছবিতে আমার আরও তদন্ত করা উচিত ছিল কেন এটি আমার পক্ষে কাজ করেছিল। কিন্তু এটি করেছে এবং এইভাবে আমি এটি রাখি কেন!
হ্যাঙ্ককা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.