गल्प + वेबपैक या जस्ट वेबपैक?


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
जॉर्ज आनंद इमान

blog.andrewray.me/webpack-when-to-use-and-why को वेबपैक के साथ गुल का उपयोग करने की आवश्यकता नहीं है
एंडी रे

मेरा स्पष्ट और सरल उदाहरण यह होगा कि मैं चाहता हूँ कि वेबपैक-डीआर सर्वर एचएमआर के साथ अपने जेएस को संभालें, लेकिन मैं उन मुद्दों का सामना कर रहा हूं जहां मैं स्थैतिक साइट जनरेटर और वेबपैक देव सर्वर का उपयोग नहीं कर सकता हूं। जटिल विन्यास के साथ मैं इसे प्राप्त कर सकता हूं, लेकिन सीधे आगे बढ़ने के लिए मैं इसे भी कर सकता हूं। तो मुख्य अंतर समय और सीखने की अवस्था है।
डेवॉल्ड


आपका अपडेट एक उत्तर होना चाहिए, +1
Z. खुल्लाह

जवाबों:


82

यह उत्तर मदद कर सकता है। टास्क रनर (गुलप, ग्रंट, आदि) और बुंडलर (वेबपैक, ब्राउजरिफ़)। एक साथ उपयोग क्यों करें?

... और यहाँ एक gulp कार्य के भीतर से webpack का उपयोग करने का एक उदाहरण है। यह एक कदम आगे बढ़ता है और मान लेता है कि आपका वेबपैक कॉन्फिग es6 में लिखा गया है।

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();
            }
        }
    }
}

मुझे लगता है कि आप पाएंगे कि जैसे ही आपका ऐप अधिक जटिल हो जाता है, आप ऊपर दिए गए उदाहरण के अनुसार वेबपैक कार्य के साथ gulp का उपयोग करना चाह सकते हैं। यह आपको अपने निर्माण में कुछ और दिलचस्प चीजें करने की अनुमति देता है जो वेबपैक लोडर और प्लगइन्स वास्तव में नहीं करते हैं, अर्थात। आउटपुट डायरेक्टरी बनाना, सर्वर शुरू करना आदि, खैर, सक्सेफुल होने के लिए, वेबपैक वास्तव में उन चीजों को कर सकता है, लेकिन आप उन्हें अपनी दीर्घकालिक जरूरतों के लिए सीमित पा सकते हैं। गल्प -> वेबपैक से आपको मिलने वाले सबसे बड़े फायदों में से एक यह है कि आप अपने वेबपैक को विभिन्न वातावरणों के लिए कस्टमाइज़ कर सकते हैं और सही समय के लिए सही कार्य कर सकते हैं। यह वास्तव में आप पर निर्भर है, लेकिन गल्प से वेबपैक चलाने में कुछ भी गलत नहीं है, वास्तव में यह कैसे करना है इसके कुछ बहुत ही रोचक उदाहरण हैं।


मेरा वेबपैक प्रोजेक्ट काफी बड़ा है - इसलिए मुझे नोड मेमोरी को कमांड लाइन कमांड के माध्यम से भी बढ़ाने की आवश्यकता है stackoverflow.com/questions/34727743/… क्या सीधे वेबपैक के माध्यम से ऐसा करने का कोई तरीका है?
अभिनव सिंगी

इन दोनों की जाँच करें। आपको नोड या वेबपैक चलाने से पहले v8 मेमोरी सेट करने की संभावना है। stackoverflow.com/questions/7193959/… और webpack.github.io/docs/build-performance.html
4m1r

मुझे यकीन नहीं है कि मैंने इसे उत्तर के रूप में क्यों स्वीकार किया। मुझे लगता है कि यह संभवतः आपके द्वारा साझा किए गए पहले लिंक के कारण था। लेकिन gulp से वेबपैक का उपयोग कर रहे हैं? यदि आप मुझसे अभी पूछते हैं तो और भी गड़बड़ है :)। मैं भी इस तरह से कुछ का सहारा लेने की कोशिश नहीं करेंगे।
पॉजिटिव

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-rimraf। आप देशी विंडोज .exe फ़ाइलों को भी चला सकते हैं जैसा कि मैंने elevate.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));
};

वास्तविक gulp कोड बहुत अधिक जटिल है कि यह, क्योंकि यह रेपो में कई दर्जन gulp फ़ाइलों में से केवल 2 है।

तो, आपके लिए कौन सा आसान है?

मेरी राय में, एनपीएम स्क्रिप्ट्स प्रभावशीलता और उपयोग में आसानी, दोनों में गल्प और ग्रंट को पार कर जाती हैं, और सभी फ्रंट-एंड डेवलपर्स को अपने वर्कफ़्लो में इसका उपयोग करने पर विचार करना चाहिए क्योंकि यह एक प्रमुख समय बचाने वाला है।

अपडेट करें

एक परिदृश्य है जिसका मैंने सामना किया है जहाँ मैं एनपीएम लिपियों और वेबपैक के संयोजन में गुल्प का उपयोग करना चाहता था।

जब मुझे उदाहरण के लिए iPad या Android डिवाइस पर दूरस्थ डिबगिंग करने की आवश्यकता होती है , तो मुझे अतिरिक्त सर्वर शुरू करने की आवश्यकता होती है। अतीत में मैंने IntelliJ IDEA (या वेबस्टॉर्म) के भीतर से अलग-अलग प्रक्रियाओं के रूप में सभी सर्वरों को चलाया, जो "कम्पाउंड" रन कॉन्फ़िगरेशन के साथ आसान है। लेकिन अगर मुझे उन्हें रोकने और फिर से शुरू करने की आवश्यकता है, तो 5 अलग-अलग सर्वर टैब को बंद करना थकाऊ था, साथ ही आउटपुट अलग-अलग विंडो में फैल गया था।

गल्प का एक लाभ यह है कि यह सभी आउटपुट को अलग-अलग स्वतंत्र प्रक्रियाओं से एक कंसोल विंडो में चेन कर सकता है, जो सभी चाइल्ड सर्वर के माता-पिता बन जाते हैं।

इसलिए मैंने एक बहुत ही सरल gulp टास्क बनाया जो सिर्फ मेरी NPM स्क्रिप्ट्स या कमांड्स को सीधे चलाता है, इसलिए सभी आउटपुट एक विंडो में दिखाई देते हैं, और मैं gulp टास्क विंडो को बंद करके एक ही बार में सभी 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। इसलिए मुझे एनपीएम स्क्रिप्ट बनानी पड़ी जो कि उसी कमांड को निष्पादित करती है, और फिर यह काम करती है।

इसलिए मैं मुख्य रूप से अपने सभी कार्यों के लिए एनपीएम लिपियों का उपयोग करता हूं, लेकिन कभी-कभी जब मुझे एक ही बार में सर्वर का एक गुच्छा चलाने की आवश्यकता होती है, तो मैं मदद करने के लिए अपने गुल्प कार्य को आग लगा दूंगा। सही काम के लिए सही टूल चुनें।

अद्यतन २

अब मैं समवर्ती नामक एक स्क्रिप्ट का उपयोग करता हूं जो ऊपर दिए गए कार्य के समान काम करता है। यह समानांतर में कई सीएलआई स्क्रिप्ट चलाता है और उन सभी को एक ही कंसोल विंडो में पाइप करता है, और इसका उपयोग करने के लिए बहुत सरल है। एक बार फिर, किसी भी कोड की आवश्यकता नहीं है (ठीक है, कोड समवर्ती के लिए नोड_मॉड्यूल के अंदर है, लेकिन आपको इसके लिए खुद को परेशान करने की आवश्यकता नहीं है)

// 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
ये तो सिर्फ उदाहरण हैं। मेरा निर्माण बहुत जटिल है, और इसमें कई स्क्रिप्ट हैं जो शेल पर निष्पादित होती हैं, निर्दोष रूप से काम करती हैं और बनाए रखना आसान है। और, एनपीएम स्क्रिप्ट मेरे लिए क्या नहीं करती है, वेबपैक करता है, जैसे कि बदसूरत, सेक गज़िप, ट्रांसफॉर्म, आदि। धन्यवाद। क्या इतना जटिल है कि आप के लिए gulp की आवश्यकता है?
तेतरादेव

2
(एक साल से अधिक बाद में योग्य): बहुत बहुत धन्यवाद, उत्कृष्ट प्रतिक्रिया !!
पॉजिटिव जी

1
@ user108471 ज़रूर वेबपैक कर सकता है, यह एक आस्तियों को बना सकता है। जो कि संबंधित आईडी के साथ संकलित सभी मॉड्यूलों को सूचीबद्ध करता है। कई अन्य प्रकार की बिल्ड-टाइम जानकारी JSON फाइलें सही प्लगइन्स के साथ बनाई जा सकती हैं। आप किस तरह का विशेष रूप से जिक्र कर रहे हैं जो गुल खिला सकता है?
तेतरदेव

1
@GiannosCharalambous उस टिप के लिए धन्यवाद। मैं वास्तव में npm-run-allअब कुछ महीनों के लिए उपयोग कर रहा हूं, लेकिन मैंने -pसमानांतर ध्वज का उपयोग करने के बारे में सोचा भी नहीं था ! मैं कोशिश करूँगा कि इस सप्ताह
TetraDev

8

मैंने अपनी विभिन्न परियोजनाओं में दोनों विकल्पों का उपयोग किया।

यहाँ एक बॉयलरप्लेट है जिसे मैंने साथ में इस्तेमाल gulpकिया है webpack- https://github.com/iroy2000/react-reflux-boilerplate-with-webpack

मैं कुछ अन्य ही प्रयोग किया जाता है परियोजना webpackके साथ npm tasks

और वे दोनों पूरी तरह से ठीक काम करते हैं। और मुझे लगता है कि यह जल गया है कि आपका कार्य कितना जटिल है, और आप अपने विन्यास में कितना नियंत्रण चाहते हैं।

के उदाहरण के लिए, यदि आप कार्य सरल है, चलो कहते हैं dev, build, test... आदि (जो बहुत मानक है), तो आप पूरी तरह से ठीक सिर्फ सरल के साथ कर रहे हैं webpackके साथ npm tasks

लेकिन अगर आपके पास बहुत जटिल वर्कफ़्लो हैं और आप अपने कॉन्फ़िगरेशन पर अधिक नियंत्रण रखना चाहते हैं (क्योंकि यह कोडिंग है), तो आप gipp रूट के लिए जा सकते हैं।

लेकिन मेरे अनुभव से, वेबपैक पारिस्थितिक तंत्र पर्याप्त प्लगइन्स और लोडर प्रदान करता है जिनकी मुझे आवश्यकता होगी, और इसलिए मुझे नंगे न्यूनतम दृष्टिकोण का उपयोग करना पसंद है जब तक कि कुछ ऐसा न हो जो आप केवल गल्प में कर सकें। और यह भी, यह आपके विन्यास को आसान बना देगा यदि आपके पास आपके सिस्टम में एक कम चीज है।

और बहुत बार, आजकल, मैं देख रहा हूं कि लोग वास्तव में gulp and browsifyसभी को एक साथ webpackअकेले में बदल रहे हैं।


5
हाँ, लेकिन वेबपैक को समझने के लिए अत्यधिक जटिल होने की एक खराब प्रतिष्ठा रही है। मैं पहले ब्राउज़र के साथ gulp का उपयोग करने की कोशिश करता हूं, अभी तक वेबपैक पर लेने के लिए तैयार नहीं हूं और आंशिक रूप से यह है कि मैंने फ्रंट-एंड पर Browserify या नोड के साथ बहुत कुछ नहीं किया है, इसलिए मैं सीखना चाहता हूं कि हर कोई इसे gulp के साथ कैसे कर रहा है। पहली बार ब्राउज करें तो मेरे पास अनुभव के मामले में वह इतिहास है
पॉजिटिव

1
अगर आपने इसके साथ काम नहीं किया है, तो केवल वेबपैक जटिल है, जैसे कि गल्प, ग्रंट, ब्राउजर, टाइपस्क्रिप्ट और कुछ भी। वेबपैक का उपयोग करना आसान है एक बार जब आप समझ जाते हैं कि कॉन्फ़िगरेशन फ़ाइल कैसे सेट करें और लोडर के साथ काम करें। वास्तव में, कॉन्फिग फाइल एक काम कर रहे वेबपैक बिल्ड के लिए कोड की 20-30 पंक्तियों के रूप में कम हो सकती है, और जितनी आवश्यक हो उतनी मजबूत हो सकती है। वेबपैक हॉट मॉड्यूल रिप्लेसमेंट का उल्लेख नहीं करना बिल्कुल आश्चर्यजनक है। देखें: andrewhfarmer.com/understanding-hmr और andrewhfarmer.com/webpack-hmr-tutorial और medium.com/@dabit3/beginner-s-guide-to-webpack-bb1fa3638460
TetraDev

2

गुलप और वेबपैक की अवधारणाएं काफी अलग हैं। आप Gulp बता कैसे सामने के अंत कोड एक साथ कदम-दर-कदम डाल करने के लिए है, लेकिन आप Webpack बता क्या आप एक कॉन्फ़िग फ़ाइल के माध्यम से चाहते हैं।

यहाँ एक छोटा लेख है (5 मिनट पढ़ा) मैंने मतभेदों की अपनी समझ को समझाते हुए लिखा: https://medium.com/@Maokai/compile-the-front-end-from-gulp-to-webpack-c45671b87fe

हमारी कंपनी पिछले एक साल में गुल्प से वेबपैक में चली गई। हालाँकि इसमें कुछ समय लगा, लेकिन हमें लगा कि हमने गुलप को वेबपैक में कैसे स्थानांतरित किया है। तो हमारे लिए, हमने जो कुछ भी गुल में किया था, वह हम वेबपैक के माध्यम से भी कर सकते हैं, लेकिन दूसरे तरीके से नहीं।

आज के अनुसार, मैं सुझाव दूंगा कि आप केवल वेबपैक का उपयोग करें और गुल्प और वेबपैक के मिश्रण से बचें, ताकि आपको और आपकी टीम को सीखने और बनाए रखने की आवश्यकता न हो, खासकर क्योंकि उन्हें बहुत अलग मानसिकता की आवश्यकता होती है।


2

ईमानदारी से मुझे लगता है कि दोनों का उपयोग करना सबसे अच्छा है।

  • सभी जावास्क्रिप्ट से संबंधित के लिए वेबपैक
  • सभी सीएसएस संबंधित के लिए घूंघट

मुझे अभी भी वेबपैक के साथ पैकेजिंग सीएसएस के लिए एक अच्छा समाधान खोजना है, और अब तक मैं जावास्क्रिप्ट के लिए सीएसएस और वेबपैक के लिए गल्प का उपयोग करके खुश हूं।

मैं npmस्क्रिप्ट का उपयोग @Tetradev के रूप में वर्णित के रूप में भी करता हूं। जाहिर है जब से मैं उपयोग कर रहा हूँ Visual Studio, और जब तक NPM Task runnerबहुत विश्वसनीय Webpack Task Runner है बहुत छोटी गाड़ी है


मैंने NPM टास्क रनर + गुल का उपयोग कर पाया है। Packange.json फ़ाइल में वेबपैक कमांड और gulp फ़ाइल से संबंधित CSS (SASS) डालें। पैकेज का सेटअप भी करें। निर्माण कार्य जारी करने के हिस्से के रूप में निर्माण कार्य के लिए कॉल करने के लिए एक निर्माण कदम रखें
निको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.