импортировать общую папку с помощью webpack 2

У меня есть следующие файловые структуры:

core
.... src
........ common
............ common.js

someProject
.... node_modules
.... src
........ someModule   
............ index.js
webpack.config.js

В index.js я хочу иметь возможность сделать что-то вроде:

import { bla } from 'common/common.js';

Я попытался использовать псевдоним, но затем мне нужно установить node_modules в core и someProject, чтобы все заработало. Я хочу установить node_modules только в someProject.

Является ли псевдоним правильным подходом или мне нужно использовать что-то другое?

Вот мой объект разрешения из webpack.config.js:

resolve: {
    extensions: ['.js', '.jsx', '.json', '.css', '.scss'],
    modules: [
        path.resolve(__dirname, 'node_modules'),
        path.resolve('./src')
    ],
    alias: {
        common: path.resolve('../core/src/common')
    }
}

Это ошибка, которую я получаю: Module build failed: ReferenceError: Unknown plugin "transform-node-env-inline" specified in "base" at 0, attempted to resolve relative to ..., но как только я устанавливаю «transform-node-env-inline», эта ошибка устранена, и я получаю еще одну, единственный способ ее решить — установить все модули npm .


person Anas    schedule 28.02.2017    source источник


Ответы (1)


Настройте его как модуль так же, как src. Вот как у меня настроена конфигурация, которая сработала для меня намного лучше, чем попытка использовать псевдоним. Я не думаю, что это должно иметь значение, где находятся ваши node_modules, но я не совсем уверен, так как мой установлен в корневом каталоге. Если это не работает из-за того, как вы настроили свои каталоги, я бы предложил просто установить node_modules в корень проекта с вашим webpack.config.js, а не внутри someProject. Я просто не могу быть уверен, что это сработает, не попробовав.

resolve: {
    modules: [
        path.resolve(__dirname, '..', 'js'),
        path.resolve(__dirname, '..', 'js', 'modules'),
        path.resolve(__dirname, '..', 'js', 'components'),
        path.resolve(__dirname, '..', 'js', 'util'),
        'node_modules',
    ],
    alias: {},
    extensions: ['.js'],
},
person thesublimeobject    schedule 28.02.2017
comment
К сожалению, это не работает, по-прежнему возникают те же ошибки, и я не могу изменить структуру файла. - person Anas; 01.03.2017
comment
Дайте мне минуту, позвольте мне попробовать настроить проект таким образом и посмотреть, смогу ли я заставить его работать. В чем твоя ошибка, только что он не может найти файл? РЕДАКТИРОВАТЬ: я действительно не понимаю, почему вы не можете изменить структуру файла... перемещение node_modules, я думаю, должно быть довольно тривиальным шагом. - person thesublimeobject; 01.03.2017
comment
Большое спасибо за вашу помощь, я добавил ошибку в вопрос. - person Anas; 01.03.2017
comment
Хм. Я вижу проблему, я думаю. У меня нет проблем с импортом файла, но он не запускается через Babel, и файл, похоже, не знает, где найти node_modules. Я решил это, просто изменив import/require на абсолютный путь, но, похоже, он не реализует функциональность веб-пакета, он просто импортирует файл без каких-либо фильтров. Позвольте мне повозиться и посмотреть, смогу ли я понять, как решить эту проблему. - person thesublimeobject; 01.03.2017
comment
У меня эта установка немного отличается от вашей. Достаточно, чтобы я подумал, что это искажает пути каталогов. У меня есть ощущение, что это связано с context, возможно, но мне нужно было бы настроить его точно так же, как у вас, чтобы правильно его отладить, и, к сожалению, у меня нет времени делать это прямо сейчас. Я знаю, вы сказали, что не можете, но выбор другой структуры каталогов, скорее всего, будет самым простым решением. Если вы или никто другой не смог решить эту проблему, когда у меня будет немного времени сегодня вечером, я проведу еще один более полный анализ/проверку. - person thesublimeobject; 01.03.2017