resolve.alias повинно працювати саме так, як ви описали, тому я надаю це як відповідь, щоб допомогти пом’якшити будь-яку плутанину, яка може виникнути внаслідок пропозиції в оригінальному запитанні, що це не працює.
конфігурація вирішення, подібна до наведеної нижче, дасть бажані результати:
// used to resolve absolute path to project's root directory (where web pack.config.js should be located)
var path = require( 'path' );
...
{
...
resolve: {
// add alias for application code directory
alias:{
mydir: path.resolve( __dirname, 'path', 'to', 'mydir' )
},
extensions: [ '', '.js' ]
}
}
require( 'mydir/myfile.js' )буде працювати, як очікувалося. Якщо цього немає, має бути якесь інше питання.
Якщо у вас є кілька модулів, які ви хочете додати до шляху пошуку, resolve.root має сенс, але якщо ви просто хочете мати можливість посилатися на компоненти в коді програми без відносних шляхів,alias здається найбільш прямим і явним.
Важливою перевагою aliasє те, що він надає вам можливість простору імен для вашого requires, що може додати ясності коду; так само, як легко зрозуміти від інших require, на який модуль посилається, aliasдозволяє писати описові дані require, які роблять очевидним, що вам потрібні внутрішні модулі, наприклад require( 'my-project/component' ). resolve.rootпросто переміщує вас у потрібний каталог, не даючи вам можливості надалі простору імен.
resolve.aliasпрацює саме так, як ви запропонували. Цікаво, чи це не вдалося через щось інше у вашійresolveконфігурації. Я використовуюalias{ mydir: path.resolve( __dirname, 'path', 'to', 'mydir' )іrequire( 'mydir/myfile.js' )працює чудово.