Один из файлов dist всегда пуст после запуска webpack

#javascript #npm #webpack

Вопрос:

Я новичок в webpack и следовал краткому руководству по созданию и обработке простого файла js из src в dist. Все в порядке.

Однако сейчас я пытаюсь заставить его обработать более одного файла JS, но столкнулся с проблемой, которую не могу обойти. Файл из исходного учебника по-прежнему отлично обрабатывается в dist, однако новый файл JS, который я создал, создает файл в dist, но он пуст. JS не минимизируется в dist.

Поэтому при запуске ниже. /dist/scripttwo.js все в порядке..

ОДНАКО, /dist/scriptone.js это всегда просто пустой файл.

webpack.config.js

 const path = require('path');

module.exports = {
    entry: {
      scriptone: './src/scriptone.js',
      scripttwo: './src/scripttwo.js'
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'dist'),
    },
};
 

scriptone.js

 function sayhello() {
  return 'hello again';
}
 

scripttwo.js

 import _ from 'lodash';

function component() {
  const element = document.createElement('div');

  // Lodash, currently included via a script, is required for this line to work
  element.innerHTML = _.join(['Hello', 'webpack'], ' ');

  return element;
}

document.body.appendChild(component());
 

Ответ №1:

Это потому, что вы ничего не экспортируете и не импортируете scriptone.js .

для тестирования: экспорт sayhello из scriptone.js добавьте следующее в конец файла:

 export defalut sayhello
 

и в scripttwo.js импортируйте функцию и используйте ее внутри файла:

 import _ from 'lodash';
import sayhello from './scriptone.js';

function component() {
  const element = document.createElement('div');

  // Lodash, currently included via a script, is required for this line to work
  element.innerHTML = _.join(['Hello', 'webpack'], ' ')   sayhello();

  return element;
}

document.body.appendChild(component());
 

Ответ №2:

Код будет там, если вы используете mode: "development" конфигурацию.

По умолчанию Webpack использует production режим, Webpack v4 будет уменьшать и древовидно встряхивать ваш код по умолчанию в рабочем режиме. Код в scriptone.js ничего не делает, не имеет побочных эффектов, это мертвый код, Webpack его отбросит. Вот почему вы получаете пустой dist/scriptone.js файл пакета.

Комментарии:

1. Спасибо slideshowp2 .. эта игра для меня недостающая часть понимания webpack.. Ура !