Size: a a a

Webpack — русскоговорящее сообщество

2020 January 16

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Денис Писаренко
Привет всем
Можете пожалуйста помочь в одном вопросе
Вот есть изначальный класс от которого идёт вся функциональность,  я его экспортирую, в вебпаке все это собираю потом подключаю bandle к странице и делаю new myClass()

Выходит ошибка что он undefined

Если после реализации этого класса я делаю window.myClass = myClass то все ок, но разве это правильно?
экспортировать пол дела, надо его еще куда-то импортировать
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Alex CherryTea
экспортировать пол дела, надо его еще куда-то импортировать
вот у меня есть файл svbsystem.js там я делаю так export default class SVBSystem {}

а в index.js я делаю так import SVBSystem from './svbsystem';

настройки webpack:

module.exports = {
 watch: true,
 entry: './src/svbsystem/index.js',
 output: {
   path: path.resolve(__dirname, 'build'),
   filename: 'svbsystem.js',
 },
 module: {
   rules: [
     {
       test: /\.m?js$/,
       exclude: /(node_modules|bower_components)/,
       use: {
         loader: 'babel-loader',
         options: {
           presets: ['@babel/preset-env'],
         },
       },
     },
   ],
 },
 stats: {
   colors: true,
 },
 devtool: 'source-map',
};
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
ну вот, в index.js твой SVBSystem и будет доступен
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Alex CherryTea
ну вот, в index.js твой SVBSystem и будет доступен
ну я то собираю bundle и подключаю его к html

    <script src="../build/svbsystem.js"></script>
   <script src="./main.js"></script>
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
не вижу index.js
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
в main.js делаю
const svb = new SVBSystem();
console.log(svb);
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
ну ты заимпортил в индекс а вызываешь в main
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Денис Писаренко
ну я то собираю bundle и подключаю его к html

    <script src="../build/svbsystem.js"></script>
   <script src="./main.js"></script>
и у почему у тебя main не в билд папке?
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Alex CherryTea
не вижу index.js
У меня же в webpack входная точка index.js а выходная dist/svbsystem.js

и в html я подключаю  dist/svbsystem.js
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
Денис Писаренко
У меня же в webpack входная точка index.js а выходная dist/svbsystem.js

и в html я подключаю  dist/svbsystem.js
dist/svbsystem.js или build/svbsystem.js ?
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
build/svbsystem.js
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
должно быть так - у тебя есть папка src. В ней есть
src/svbsystem.js
src/index.js
...
src/что-то-еще.js


в конфиге вебпака
entry: './src/index.js',

в index.js
import  import SVBSystem from './svbsystem';

const svb = new SVBSystem();
// какая-то логика использующая svb


в src/svbsystem.js

export default class SVBSystem {
 // реализация класса
}
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
после билда у тебя получится (автоматически, сам ты ничего не вписываешь)

build/index.html
build/bandle.js
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Извиняюсь я не правильно выразился
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Я пишу библиотеку, назовем ее svbsystem

есть папка src. В ней есть
src/svbsystem/svbsystem.js
src/svbsystem/index.js
...
src/svbsystem/что-то-еще.js

в src/svbsystem/svbsystem.js
export default class SVBSystem {
 // реализация класса
}

в src/svbsystem/index.js
import  import SVBSystem from './svbsystem';

в конфиге вебпака
entry: './src/svbsystem/index.js',
 output: {
   path: path.resolve(__dirname, 'build'),
   filename: 'svbsystem.js',
 },

и вот теперь после билда у меня в папке build:
build/svbsystem.js

И теперь мне нужно, чтобы любой пользователь библиотеки мог подключить ее к себе в html допустим и без вебпака ее использовать
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
у тебя энтри не правильная
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Я знаю что можно сделать так
window.SVBSystem = SVBSystem;


И тогда всё будет работать, но правильно ли это?
источник

A

Alex CherryTea in Webpack — русскоговорящее сообщество
entry: './src/index.js'  должно быть
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Alex CherryTea
у тебя энтри не правильная
Правильная, извиняюсь у меня в папке src еще есть папка svbsystem а там уже все остальные js
источник

ДП

Денис Писаренко in Webpack — русскоговорящее сообщество
Отредактировал сообщение
источник