Текущий путь к файлу в веб-пакете

webpack

16892 просмотра

3 ответа

Есть ли способ получить текущий путь к файлу, как в requirejs?

define(['module'], function (module) {
    console.log(module.uri)
});
Автор: Sergey Lapin Источник Размещён: 22.06.2019 11:45

Ответы (3)


34 плюса

Решение

Да есть один: __filename.

Но по умолчанию веб-пакет не пропускает информацию о пути, и вам нужно установить флаг конфигурации, чтобы получить реальное имя файла вместо mock ( "/index.js").

// /home/project/webpack.config.js
module.exports = {
  context: __dirname,
  node: {
    __filename: true
  }
}

Чем вы можете использовать __filenameполучить текущее имя файла относительно contextопции:

// in /home/project/dir/file.js
console.log(__filename);
// => logs "dir/file.js"

Имя файла встраивается только в модули, где __filenameиспользуется. Так что вам не нужно бояться, что пути просочились из других модулей.

Автор: Tobias K. Размещён: 29.08.2014 09:14

3 плюса

Чтобы получить имя файла и имя каталога, я добавил это в конфигурацию веб-пакета.

node : {
   __filename: true,
   __dirname: true,
},

установка контекста на __dirname испортила конфигурацию моего веб-пакета, так как мой webpackconfig не помещен в root, но пути настроены таким образом

Автор: P-A Размещён: 26.04.2017 06:03

1 плюс

Попробуй webpack.DefinePluginс webpack.DefinePlugin.runtimeValue. Это дает реальные константы, которые хороши для require()иimport

new webpack.DefinePlugin({
__NAME: webpack.DefinePlugin.runtimeValue(
    v => {
        const res = v.module.rawRequest.substr(2)
        return JSON.stringify(res); // Strings need to be wrapped in quotes
    },
    []
)
})

Автор: ilya Размещён: 16.01.2019 12:42
Вопросы из категории :
32x32