我正在製作控制檯實用程序,它接受配置文件的路徑作爲控制檯參數。Wepback需要變量
F.e:實用-f /path/to/file.js
我需要導入該文件讀取配置。有沒有可能用webpack處理這個問題?據我瞭解,在這種情況下上下文不能幫助我。
謝謝。
P.S.我已經在使用webpack了。
P.S解決方案是使用這樣的:的eval(「需要」)(dynamicPath)
我正在製作控制檯實用程序,它接受配置文件的路徑作爲控制檯參數。Wepback需要變量
F.e:實用-f /path/to/file.js
我需要導入該文件讀取配置。有沒有可能用webpack處理這個問題?據我瞭解,在這種情況下上下文不能幫助我。
謝謝。
P.S.我已經在使用webpack了。
P.S解決方案是使用這樣的:的eval(「需要」)(dynamicPath)
的WebPack只能做一個動態需要這樣如果要需要的文件都可以在編譯時。例如,如果你需要再下罩「動態」的文件路徑,像
require('./assets/images/' + someVariable + '.png')
,將的WebPack包括所有圖像匹配捆綁需要的代碼模式。它基本上包括匹配正則表達式中的所有文件:
/.\/assets\/images\/*.png/
我可能會嘗試將配置文件中的特定文件夾,並使用該文件夾的要求:
require('./configs/' + process.env.CONFIG_NAME);
這樣的WebPack將只包括configs
文件夾中的所有文件。
該Webpack文檔是可怕但有更多的信息on the dynamic requires page。
如果您將配置文件作爲參數傳遞給節點進程,則可以通過process.argv
命令行參數數組訪問它。我不知道您是否正在使用其他框架(如優秀的commander)來幫助製作命令行程序,但我們可以對該陣列進行切片以找到我們需要的內容。
要從腳本的啓動目錄中解析路徑,可以使用process.cwd()
- 這將返回節點進程工作目錄的絕對路徑。
最後,您可以使用path.resolve(processPath, configPath)
(docs)生成始終保證解析到配置的路徑。然後你可以要求這條路。
您可能需要先執行此操作。你的文件的頂部可能是這個樣子:
/* relevant require() calls for necessary modules */
var path = require('path');
// first two arguments are node process and executed file
var args = process.argv.slice(2);
var configIndex = args.findIndex('-f') + 1;
var configPath = path.resolve(process.cwd(), args[configIndex]);
var config = require(configPath);
/* the rest of your code */
我不認爲你需要的WebPack只爲這 - 你應該可以要求它,你訪問後'process.argv' – Barnabus
我已經使用webpack在這個項目中。我只需要配置文件。 – zim32
好的 - 我會在下面的答案中加入更全面的解釋:) – Barnabus