গুলপ + ওয়েবপ্যাক না জাস্ট ওয়েবপ্যাক?


161

আমি লোকজনকে ওয়েবপ্যাক দিয়ে ঝাঁকুনি ব্যবহার করতে দেখছি। কিন্তু তারপরে আমি পড়ি ওয়েবপ্যাক গুল্প প্রতিস্থাপন করতে পারে? আমি এখানে সম্পূর্ণ বিভ্রান্ত ... কেউ কি ব্যাখ্যা করতে পারেন?

হালনাগাদ

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

আপনি যদি জলদি না চান তবে হ্যাঁ উদ্বেগ রয়েছে তবে আপনি কেবল আপনার প্যাকেজ.জসনে কমান্ডগুলি নির্দিষ্ট করতে পারেন এবং কেবল প্রথম দিকে উঠতে এবং চালানোর জন্য কোনও টাস্ক রানার ছাড়াই কমান্ড-লাইন থেকে তাদের কল করতে পারেন। উদাহরণ স্বরূপ:

"scripts": {
      "babel": "babel src -d build",
      "browserify": "browserify build/client/app.js -o dist/client/scripts/app.bundle.js",
      "build": "npm run clean && npm run babel && npm run prepare && npm run browserify",
      "clean": "rm -rf build && rm -rf dist",
      "copy:server": "cp build/server.js dist/server.js",
      "copy:index": "cp src/client/index.html dist/client/index.html",
      "copy": "npm run copy:server && npm run copy:index",
      "prepare": "mkdir -p dist/client/scripts/ && npm run copy",
      "start": "node dist/server"
    },

3
এটি ওয়েবপ্যাকের নিজস্ব ডক্স বা যেকোন নিবন্ধের চেয়ে ওয়েবপ্যাকটি উপলব্ধি করতে আমাকে সহায়তা করেছে: github.com/petehunt/webpack-howto
জর্জ আনন্দ ইমান


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


আপনার আপডেটের উত্তর হওয়া উচিত, +1
জেড খোলা 10'18

উত্তর:


82

এই উত্তর সাহায্য করতে পারে। টাস্ক রানার্স (গুলপ, গ্রান্ট, ইত্যাদি) এবং বান্ডিলাররা (ওয়েবপ্যাক, ব্রাউজারফাই)। কেন একসাথে ব্যবহার?

... এবং এখানে একটি ঝাঁকুনির কাজ থেকে ওয়েবপ্যাক ব্যবহার করার একটি উদাহরণ's এটি আরও এক ধাপ এগিয়ে যায় এবং ধরে নেয় যে আপনার ওয়েবপ্যাক কনফিগারেশনটি এস 6-এ লেখা আছে।

var gulp = require('gulp');
var webpack = require('webpack');
var gutil = require('gutil');
var babel = require('babel/register');
var config = require(path.join('../..', 'webpack.config.es6.js'));

gulp.task('webpack-es6-test', function(done){
   webpack(config).run(onBuild(done));
});

function onBuild(done) {
    return function(err, stats) {
        if (err) {
            gutil.log('Error', err);
            if (done) {
                done();
            }
        } else {
            Object.keys(stats.compilation.assets).forEach(function(key) {
                gutil.log('Webpack: output ', gutil.colors.green(key));
            });
            gutil.log('Webpack: ', gutil.colors.blue('finished ', stats.compilation.name));
            if (done) {
                done();
            }
        }
    }
}

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


আমার webpack প্রকল্পের বেশ বড় হয় - তাই আমি কমান্ড লাইন কমান্ড মাধ্যমে এছাড়াও নোড মেমরির বৃদ্ধি প্রয়োজন stackoverflow.com/questions/34727743/... সেখানে webpack সরাসরি মাধ্যমে তা করার কোন উপায় আছে কি?
অভিনব সিঙ্গি

এই দুটি পরীক্ষা করে দেখুন। আপনাকে সম্ভবত নোড বা ওয়েবপ্যাক চালানোর আগে ভি 8 মেমরি সেট করতে হবে। stackoverflow.com/questions/7193959/... এবং webpack.github.io/docs/build-performance.html
4m1r

আমি কেন উত্তর হিসাবে এটি গ্রহণ করে তা নিশ্চিত নই। আমি মনে করি এটি সম্ভবত আপনি ভাগ করা প্রথম লিঙ্কটির কারণে হয়েছিল। তবে গুলপ থেকে ওয়েবপ্যাক ব্যবহার করছেন? যদি আপনি এখনই আমাকে জিজ্ঞাসা করেন তবে এটি আরও গন্ডগোল এমন কিছুর আশ্রয় নেওয়ার চেষ্টাও করব না।
PositiveGuy

80

এনপিএম স্ক্রিপ্টগুলি গুল্পের মতো একই কাজ করতে পারে তবে প্রায় 50x কম কোডে। আসলে কোনও কোড ছাড়াই কেবল কমান্ড লাইন আর্গুমেন্ট।

উদাহরণস্বরূপ, আপনি যেখানে বিভিন্ন পরিবেশের জন্য আলাদা কোড রাখতে চান সেখানে বর্ণিত ব্যবহারের ক্ষেত্রে।

ওয়েবপ্যাক + এনপিএম স্ক্রিপ্ট সহ, এটি এটি সহজ:

"prebuild:dev": "npm run clean:wwwroot",
"build:dev": "cross-env NODE_ENV=development webpack --config config/webpack.development.js --hot --profile --progress --colors --display-cached",
"postbuild:dev": "npm run copy:index.html && npm run rename:index.html",

"prebuild:production": "npm run clean:wwwroot",
"build:production": "cross-env NODE_ENV=production webpack --config config/webpack.production.js --profile --progress --colors --display-cached --bail",
"postbuild:production": "npm run copy:index.html && npm run rename:index.html",

"clean:wwwroot": "rimraf -- wwwroot/*",
"copy:index.html": "ncp wwwroot/index.html Views/Shared",
"rename:index.html": "cd ../PowerShell && elevate.exe -c renamer --find \"index.html\" --replace \"_Layout.cshtml\" \"../MyProject/Views/Shared/*\"",

এখন আপনি কেবল দুটি ওয়েবপ্যাক কনফিগার স্ক্রিপ্টগুলি বজায় রাখুন, একটি উন্নয়ন মোডের webpack.development.jsজন্য এবং একটি উত্পাদন মোডের জন্য webpack.production.js,। আমি এমন একটি ব্যবহার করি webpack.common.jsযা সমস্ত পরিবেশে ভাগ করা ওয়েবপ্যাক কনফিগার করে এবং তাদের মার্জ করতে ওয়েবপ্যাকমার্জ ব্যবহার করে।

এনপিএম স্ক্রিপ্টগুলির শীতলতার কারণে এটি সহজেই চেইনিংয়ের অনুমতি দেয়, কীভাবে ঝাঁকুনি স্ট্রিমস / পাইপগুলির অনুরূপ।

উপরের উদাহরণে, বিকাশের জন্য তৈরি করতে, আপনি কেবল আপনার কমান্ড লাইনে যান এবং সম্পাদন করেন npm run build:dev

  1. এনপিএম প্রথমে চলবে prebuild:dev,
  2. তারপরে build:dev,
  3. এবং অবশেষে postbuild:dev

preএবং postউপসর্গ NPM তা বলুন অনুক্রমে চালানো।

যদি আপনি খেয়াল করেন, ওয়েবপ্যাক + এনপিএম স্ক্রিপ্টগুলির সাহায্যে আপনি কোনও নেটিভ প্রোগ্রাম যেমন rimrafগ্ল্প- র‍্যাপারের পরিবর্তে একটি নেটিভ প্রোগ্রাম চালাতে পারেন gulp-rimrafelevate.exeলিনাক্স বা ম্যাকের সাথে নেটিভ উইন্ডোজ। এক্স ফাইল হিসাবে বা নেটিভ * নিক্স ফাইলগুলি আপনি এখানে চালাতে পারেন ।

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

গুলপ ডেভলপমেন্ট কোড

import * as gulp from 'gulp';
import * as gulpLoadPlugins from 'gulp-load-plugins';
import * as merge from 'merge-stream';
import * as util from 'gulp-util';
import { join/*, sep, relative*/ } from 'path';

import { APP_DEST, APP_SRC, /*PROJECT_ROOT, */TOOLS_DIR, TYPED_COMPILE_INTERVAL } from '../../config';
import { makeTsProject, templateLocals } from '../../utils';

const plugins = <any>gulpLoadPlugins();

let typedBuildCounter = TYPED_COMPILE_INTERVAL; // Always start with the typed build.

/**
 * Executes the build process, transpiling the TypeScript files (except the spec and e2e-spec files) for the development
 * environment.
 */
export = () => {
  let tsProject: any;
  let typings = gulp.src([
    'typings/index.d.ts',
    TOOLS_DIR + '/manual_typings/**/*.d.ts'
  ]);
  let src = [
    join(APP_SRC, '**/*.ts'),
    '!' + join(APP_SRC, '**/*.spec.ts'),
    '!' + join(APP_SRC, '**/*.e2e-spec.ts')
  ];

  let projectFiles = gulp.src(src);
  let result: any;
  let isFullCompile = true;

  // Only do a typed build every X builds, otherwise do a typeless build to speed things up
  if (typedBuildCounter < TYPED_COMPILE_INTERVAL) {
    isFullCompile = false;
    tsProject = makeTsProject({isolatedModules: true});
    projectFiles = projectFiles.pipe(plugins.cached());
    util.log('Performing typeless TypeScript compile.');
  } else {
    tsProject = makeTsProject();
    projectFiles = merge(typings, projectFiles);
  }

  result = projectFiles
    .pipe(plugins.plumber())
    .pipe(plugins.sourcemaps.init())
    .pipe(plugins.typescript(tsProject))
    .on('error', () => {
      typedBuildCounter = TYPED_COMPILE_INTERVAL;
    });

  if (isFullCompile) {
    typedBuildCounter = 0;
  } else {
    typedBuildCounter++;
  }

  return result.js
    .pipe(plugins.sourcemaps.write())
// Use for debugging with Webstorm/IntelliJ
// https://github.com/mgechev/angular2-seed/issues/1220
//    .pipe(plugins.sourcemaps.write('.', {
//      includeContent: false,
//      sourceRoot: (file: any) =>
//        relative(file.path, PROJECT_ROOT + '/' + APP_SRC).replace(sep, '/') + '/' + APP_SRC
//    }))
    .pipe(plugins.template(templateLocals()))
    .pipe(gulp.dest(APP_DEST));
};

গুলপ প্রোডাকশন কোড

import * as gulp from 'gulp';
import * as gulpLoadPlugins from 'gulp-load-plugins';
import { join } from 'path';

import { TMP_DIR, TOOLS_DIR } from '../../config';
import { makeTsProject, templateLocals } from '../../utils';

const plugins = <any>gulpLoadPlugins();

const INLINE_OPTIONS = {
  base: TMP_DIR,
  useRelativePaths: true,
  removeLineBreaks: true
};

/**
 * Executes the build process, transpiling the TypeScript files for the production environment.
 */

export = () => {
  let tsProject = makeTsProject();
  let src = [
    'typings/index.d.ts',
    TOOLS_DIR + '/manual_typings/**/*.d.ts',
    join(TMP_DIR, '**/*.ts')
  ];
  let result = gulp.src(src)
    .pipe(plugins.plumber())
    .pipe(plugins.inlineNg2Template(INLINE_OPTIONS))
    .pipe(plugins.typescript(tsProject))
    .once('error', function () {
      this.once('finish', () => process.exit(1));
    });


  return result.js
    .pipe(plugins.template(templateLocals()))
    .pipe(gulp.dest(TMP_DIR));
};

আসল গুল্প কোডটি আরও জটিল যে এটি রেপোতে কয়েকটি ডজন গুল্প ফাইলের মধ্যে কেবল 2।

তাহলে, কোনটি আপনার পক্ষে সহজ?

আমার মতে, এনপিএম স্ক্রিপ্টগুলি কার্যকারিতা এবং ব্যবহারের সহজতা উভয় ক্ষেত্রে গল্প এবং গ্রান্টকে ছাড়িয়ে গেছে, এবং সমস্ত ফ্রন্ট-এন্ড বিকাশকারীকে এটি তাদের কার্যপ্রবাহে ব্যবহার করা বিবেচনা করা উচিত কারণ এটি একটি প্রধান সময় সাশ্রয়কারী।

হালনাগাদ

আমি এমন একটি দৃশ্যের মুখোমুখি হলাম যেখানে আমি গুলপকে এনপিএম স্ক্রিপ্ট এবং ওয়েবপ্যাকের সাথে একত্রে ব্যবহার করতে চেয়েছিলাম।

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

গাল্পের অন্যতম উপকারিতা হ'ল পৃথক স্বতন্ত্র প্রক্রিয়াগুলি থেকে সমস্ত আউটপুটকে একটি কনসোল উইন্ডোতে শৃঙ্খলিত করা যায়, যা সমস্ত শিশু সার্ভারের পিতা-মাতা হয়।

সুতরাং আমি একটি খুব সহজ গাল্প টাস্ক তৈরি করেছি যা কেবলমাত্র আমার এনপিএম স্ক্রিপ্ট বা কমান্ডগুলি সরাসরি চালায়, তাই সমস্ত আউটপুট একটি উইন্ডোতে উপস্থিত হয়, এবং আমি সহজেই সমস্ত 5 সার্ভার একবারে জাল্প টাস্ক উইন্ডোটি বন্ধ করে শেষ করতে পারি।

Gulp.js

/**
 * Gulp / Node utilities
 */
var gulp = require('gulp-help')(require('gulp'));
var utils = require('gulp-util');
var log = utils.log;
var con = utils.colors;

/**
 * Basic workflow plugins
 */
var shell = require('gulp-shell'); // run command line from shell
var browserSync = require('browser-sync');

/**
 * Performance testing plugins
 */
var ngrok = require('ngrok');

// Variables
var serverToProxy1 = "localhost:5000";
var finalPort1 = 8000;


// When the user enters "gulp" on the command line, the default task will automatically be called. This default task below, will run all other tasks automatically.

// Default task
gulp.task('default', function (cb) {
   console.log('Starting dev servers!...');
   gulp.start(
      'devserver:jit',
      'nodemon',
      'browsersync',
      'ios_webkit_debug_proxy'
      'ngrok-url',
      // 'vorlon',
      // 'remotedebug_ios_webkit_adapter'
   );
});

gulp.task('nodemon', shell.task('cd ../backend-nodejs && npm run nodemon'));
gulp.task('devserver:jit', shell.task('npm run devserver:jit'));
gulp.task('ios_webkit_debug_proxy', shell.task('npm run ios-webkit-debug-proxy'));
gulp.task('browsersync', shell.task(`browser-sync start --proxy ${serverToProxy1} --port ${finalPort1} --no-open`));
gulp.task('ngrok-url', function (cb) {
   return ngrok.connect(finalPort1, function (err, url) {
      site = url;
      log(con.cyan('ngrok'), '- serving your site from', con.yellow(site));
      cb();
   });
});
// gulp.task('vorlon', shell.task('vorlon'));
// gulp.task('remotedebug_ios_webkit_adapter', shell.task('remotedebug_ios_webkit_adapter'));

এখনও কোডের একটি বিট আমার মতে 5 টি কাজ চালানোর জন্য, কিন্তু এটি উদ্দেশ্যে কাজ করে। একটি সতর্কতা হ'ল gulp-shellকিছু কমান্ড সঠিকভাবে চলমান বলে মনে হয় না ios-webkit-debug-proxy। সুতরাং আমাকে একটি এনপিএম স্ক্রিপ্ট তৈরি করতে হবে যা একই কমান্ডটি কার্যকর করে এবং তারপরে এটি কার্যকর হয়।

সুতরাং আমি আমার সমস্ত কাজের জন্য প্রাথমিকভাবে এনপিএম স্ক্রিপ্টগুলি ব্যবহার করি তবে মাঝে মাঝে যখন আমার একবারে একগুচ্ছ সার্ভার চালানোর প্রয়োজন হয় তখন আমি আমার গুল্প টাস্কটি সেরে ফেলব। সঠিক কাজের জন্য সঠিক সরঞ্জামটি চয়ন করুন।

আপডেট 2

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

// NOTE: If you need to run a command with spaces in it, you need to use 
// double quotes, and they must be escaped (at least on windows).
// It doesn't seem to work with single quotes.

"run:all": "concurrently \"npm run devserver\" nodemon browsersync ios_webkit_debug_proxy ngrok-url"

এটি একটি টার্মিনাল সমান্তরাল পাইপ আউট সমস্ত 5 স্ক্রিপ্ট চালায়। অসাধারণ! যাতে এই বিন্দুটি, আমি খুব কমই ঝাল ব্যবহার করি, যেহেতু কোনও কোড ছাড়াই একই কাজ করার জন্য অনেকগুলি ক্লাইপ স্ক্রিপ্ট রয়েছে।

আমি আপনাকে এই নিবন্ধগুলি পড়ার পরামর্শ দিচ্ছি যা তাদের গভীরতার সাথে তুলনা করে।


14
এ কারণেই আপনার কাজগুলি তুলনামূলকভাবে সহজ। শুভকামনা স্ক্রিপ্টিং কমপ্লেক্স শেল দিয়ে তৈরি করে :-)
ফিলিপ সোবাকজাক

5
এগুলি কেবল উদাহরণ। আমার বিল্ডটি খুব জটিল, এবং শেলের উপর চালানো অনেকগুলি স্ক্রিপ্ট রয়েছে, নির্দ্বিধায় কাজ করে এবং বজায় রাখা সহজ। এবং, এনপিএম স্ক্রিপ্টগুলি আমার জন্য যা করে না, ওয়েবপ্যাকগুলি যেমন uglify, gzip, compress, ইত্যাদি রূপান্তরিত করে ইত্যাদি ধন্যবাদ। এত জটিল কীসের জন্য আপনার ঝালর দরকার?
তেত্রদেব

2
(এক বছরেরও বেশি পরে LOL): অনেক অনেক ধন্যবাদ, দুর্দান্ত প্রতিক্রিয়া !!
PositiveGuy

1
@ user108471 অবশ্যই ওয়েবপ্যাকটি এটি করতে পারে, এটি একটি সম্পদ.জসন তৈরি করতে পারে যা সম্পর্কিত আইডির সাথে সংযুক্ত সমস্ত মডিউল তালিকাভুক্ত করে। সঠিক প্লাগইনগুলি সহ আরও অনেক ধরণের বিল্ড-টাইম তথ্য JSON ফাইল তৈরি করা যেতে পারে। আপনি কোন ধরণের বিশেষভাবে উল্লেখ করতে পারেন যে gাকাটি করতে পারে?
তেত্রদেব

1
@ জিয়াননসচরালামবস সেই টিপটির জন্য ধন্যবাদ। আমি npm-run-allএখন কয়েক মাস ধরে ব্যবহার করছি, তবে আমি -pসমান্তরাল পতাকা ব্যবহার করার কথা ভাবিনি ! আমি এই সপ্তাহে চেষ্টা করব
তেত্রাদেভ

8

আমি আমার বিভিন্ন প্রকল্পে উভয় বিকল্প ব্যবহার করেছি।

এখানে এক boilerplate, যে আমি একসঙ্গে ব্যবহার করা হয় gulpসঙ্গে webpack- https://github.com/iroy2000/react-reflux-boilerplate-with-webpack

আমার webpackসাথে অন্য কিছু প্রকল্প ব্যবহৃত হয়েছে npm tasks

এবং তারা উভয় সম্পূর্ণ সূক্ষ্ম কাজ করে। এবং আমি মনে করি এটি আপনার কাজটি কতটা জটিল এবং আপনার কনফিগারেশনে আপনি কতটা নিয়ন্ত্রণ রাখতে চান তা হ'ল।

এর উদাহরণস্বরূপ, যদি আপনি কাজগুলো সহজ, বলুক dev, build, test... ইত্যাদি (যা খুবই মান), আপনি সম্পূর্ণই সূক্ষ্ম শুধু সহজ সঙ্গে আছে webpackসঙ্গে npm tasks

তবে আপনার যদি খুব জটিল ওয়ার্কফ্লো থাকে এবং আপনার কনফিগারেশনের উপর আরও নিয়ন্ত্রণ রাখতে চান (কারণ এটি কোডিং হচ্ছে) তবে আপনি গল্প রুটে যেতে পারেন।

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

এবং অনেক সময়, আজকাল, আমি দেখতে পাচ্ছি লোকেরা বাস্তবে gulp and browsifyসমস্ত webpackএকা একসাথে প্রতিস্থাপন করছে ।


5
হ্যাঁ তবে ওয়েবপ্যাকের বোঝার জন্য অতিরিক্ত জটিল হওয়ার খারাপ খ্যাতি রয়েছে। আমি ব্রাউজারিফাইয়ের সাথে প্রথমে ঝালটি ব্যবহার করার চেষ্টা করি, ওয়েবপ্যাকটি এখনও গ্রহণের জন্য প্রস্তুত নই এবং আংশিক আমি ফ্রন্ট এন্ডে ব্রাউজারফি বা নোড দিয়ে খুব বেশি কিছু করি নি তাই আমি শিখতে চাই যে প্রত্যেকে কীভাবে ঝাঁকুনি দিয়ে এটি করছে এবং প্রথম browserify ঠিক তাই আমি অভিজ্ঞতা পরিপ্রেক্ষিতে যে ইতিহাস আছে
PositiveGuy

1
ওয়েবপ্যাক কেবল জটিল যদি আপনি এটির সাথে কাজ না করেন ঠিক যেমন গল্প, গ্রান্ট, ব্রাউজারিফাই, টাইপস্ক্রিপ্ট এবং অন্য যে কোনও কিছু। আপনি কীভাবে কনফিগার ফাইলটি সেট আপ করবেন এবং লোডারগুলির সাথে কীভাবে কাজ করবেন তা বুঝতে পারলে ওয়েবপ্যাকটি ব্যবহার করা খুব সহজ। প্রকৃতপক্ষে, কনফিগার ফাইলগুলি কার্যকারী ওয়েবপ্যাক তৈরির জন্য কোডের 20-30 লাইনের চেয়ে কম হতে পারে এবং আপনার প্রয়োজন মতো শক্তিশালী হতে পারে। ওয়েবপ্যাক হট মডিউল প্রতিস্থাপন উল্লেখ না করা একেবারে আশ্চর্যজনক। দেখুন: andrewhfarmer.com/understanding-hmr এবং andrewhfarmer.com/webpack-hmr-tutorial এবং medium.com/@dabit3/beginner-s-guide-to-webpack-b1f1a3638460
TetraDev

2

গুলপ এবং ওয়েবপ্যাকের ধারণাগুলি একেবারেই আলাদা। আপনি Gulp বলতে কিভাবে ফ্রন্ট-এন্ড কোড একসঙ্গে ধাপে ধাপে করা, কিন্তু আপনি Webpack বলতে কি আপনি একটি কনফিগ ফাইল মাধ্যমে চাই।

এখানে একটি সংক্ষিপ্ত নিবন্ধ (5 মিনিট পঠিত) আমি পার্থক্য সম্পর্কে আমার বোঝার ব্যাখ্যা দিয়ে লিখেছিলাম: https://medium.com/@Maokai/compile-the-front-end-from-gulp-to-webpack-c45671ad87fe

আমাদের সংস্থা গত বছর গুলপ থেকে ওয়েবপ্যাকে চলে গেছে। যদিও এটি কিছুটা সময় নিয়েছে, তবে আমরা বুঝতে পেরেছিলাম যে গুলপে আমরা যা করেছিলাম তা কীভাবে ওয়েবপ্যাকে স্থানান্তরিত করতে পারি। আমাদের কাছে, গুল্পে আমরা যা কিছু করেছি তা ওয়েবপ্যাকের মাধ্যমেও করতে পারি, তবে অন্যভাবে নয়।

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


2

সত্যই আমি মনে করি উভয় ব্যবহার করা সবচেয়ে ভাল।

  • সম্পর্কিত সমস্ত জাভাস্ক্রিপ্টের জন্য ওয়েবপ্যাক
  • সম্পর্কিত সমস্ত CSS সম্পর্কিত গুলপ

ওয়েবপ্যাক সহ সিএসএস প্যাকেজিংয়ের জন্য আমার এখনও একটি শালীন সমাধান খুঁজে পেতে হবে এবং এখনও পর্যন্ত আমি জাভাস্ক্রিপ্টের জন্য সিএসএসের জন্য গাল্প এবং ওয়েবপ্যাকটি ব্যবহার করে খুশি।

আমি npmবর্ণিত হিসাবে @ টেটরদেব হিসাবে স্ক্রিপ্টগুলিও ব্যবহার করি । বিশেষত যেহেতু আমি ব্যবহার করছি Visual Studioএবং যখন NPM Task runnerবেশ নির্ভরযোগ্য তখন Webpack Task Runnerবেশ বগি


আমি এনপিএম টাস্ক রানার + গুল্প কীটি ব্যবহার করে পেয়েছি। প্যাকেঞ্জ.জসন ফাইল এবং গুল্প ফাইলে সম্পর্কিত সিএসএস (এসএএসএস) ওয়েবপ্যাক কমান্ডগুলি রাখুন। এছাড়াও সেটআপ package.json একটি build পদক্ষেপ যে উৎপাদন মুক্তি অংশ হিসাবে একটি নি: শ্বাসে কাজের আহ্বান আছে
নিকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.