2016-08-16 23 views
0

У меня есть приложение для веб-пакетов и вы хотите, чтобы на выходе было несколько файлов, а не один файл javascript. например, если у меня есть такая структура папокwebpack build to multiple files

components 
1.js 
2.js 
actions 
1.js. 
2.js 

Мне нужно собрать файлы в той же структуре папок. Как я могу это достичь?

Я попытался Бабель консоли:

babel ./src --out-dir ./lib --source-maps --presets es2015,react --plugins babel-plugin-add-module-exports,babel-plugin-transform-decorators-legacy,babel-plugin-transform-class-properties --watch 

Она выводит файлы, как я хотел, но получаю ошибку

Не удается разрешить модуль

Потому что ничего не знает о WebPack решимости не знаю.

Любые предложения?

+0

Прочтите описание тегов! [tag: babel] не является правильным тегом (и это явно говорит об этом): * «Библиотека интернационализации Python с акцентом на веб-приложениях. Для вопросов о библиотеке JavaScript используйте [babeljs].» * –

+0

Oops мой плохой .... – user525717

ответ

1

Получение webpack для вывода нескольких файлов возможно, но оно имеет ограничения. Сначала важно понять, как это работает. Webpack фактически предоставляет сценарий времени выполнения, который может загружать «куски» кода по мере необходимости, это важно для больших приложений, поэтому пользователю не нужно загружать javascript для всего приложения, чтобы увидеть домашнюю страницу. Но webpack должен отслеживать эти куски и то, что они назвали во время сборки, чтобы иметь возможность правильно загружать их во время выполнения. По этой причине у этого есть свои собственные соглашения об именах файлов, чтобы включить эту функциональность. Подробнее см .: https://webpack.github.io/docs/code-splitting.html. Таким образом, вы можете потребовать. Все ваши отпечатки, но они не будут называться и скопированы так, как вы описываете, поскольку время выполнения webpack не сможет найти их в этом случае.

Другое, что важно учитывать, это то, что webpack является поставщиком, поэтому он предназначен для связывания файлов. По существу, вы говорите, что не хотите связывать свои файлы. Поэтому, если это так, вам следует, вероятно, изучить использование require.js. Многие люди перешли от требований к связям, таким как Wepback и Browserify, поскольку, как правило, неэффективно загружать каждый маленький модуль отдельно. Но каждое приложение отличается, поэтому у вас действительно есть веская причина не связывать.

Если вы действительно хотите сделать несколько пакетов, но хотите оптимизировать, как это делается, я также могу помочь с этим, и веб-пакет, безусловно, отличный инструмент для этого. Но мне нужно будет понять ваш прецедент немного больше, чтобы дать лучший совет.

+0

Спасибо Бен за ответ, я просто пытаюсь добиться импорта {Login} из 'my-module/components'. Я пишу модуль с webpack, который я буду включать в свое веб-приложение для веб-папок, просто хочу иметь такой импорт, теперь у меня есть import {components} из «my-module» и вы можете получить доступ к Login, как этот компонент. Login. Любой совет? – user525717

+0

Похоже на то, что у вас есть небольшая проблема с синтаксисом импорта es6, и webpack будет удовлетворять ваши потребности просто отлично. Можете ли вы отправить структуру папок, которую вы хотите использовать для моего модуля/компонентов? Синтаксис звучит так, будто вы пытаетесь создать файл с именем components.js (x) в папке my-module с экспортом, который выглядит так: 'export class Login ...'. Кажется, что вы действительно хотите сделать, это иметь отдельный файл в папке с компонентами для входа в систему, называемый Login.jsx. В этом случае Login.jsx shoud имеет 'export default Login;' внизу (при условии, что Login является компонентом). –

+0

Если Войти.jsx - это собственный файл и выполняет 'экспорт по умолчанию', тогда вам нужно импортировать ti следующим образом:' import Login from 'my-modules/components/Login'; ' –