是的,使用resolve.extensions
。例如,這的WebPack配置片段:
resolve: {
extensions: ['', '.js', '.mobile.js']
}
會造成的WebPack在遭遇require('./button')
時尋找button
,button.js
終於button.mobile.js
。您可以將擴展名作爲命令行參數。例如,如果您添加yargs
到項目,並使用它,像這樣的的WebPack配置文件:
const argv = require('yargs').argv;
... {
resolve: {
extensions: ['', '.js', '.' + argv.target + '.js']
}
}
然後webpack --target=mobile
也將包括在包.mobile.js
文件,同樣爲webpack --target=web
或任何其他目標。
請注意,如果button.js
和button.mobile.js
都存在,則首先找到的將被要求,其餘所有其他 - 將被忽略。如果您有組件的通用部件和平臺特定部件,則必須將這兩部分放入具有不同名稱和require
的文件中 - 例如button.js
和button-platform.mobile.js
;然後var button = require('./button'); var buttonPlatform = require('./button-platform');
併合並兩者。
編輯:問題的答案的第二部分
所找輸出文件夾結構可以被創建,再次,使用yargs
- 從上面只需將--target
參數到的WebPack配置的output
部分:
output: {
path: path.join(__dirname, argv.target);
filename: 'app.js'
}
這很完美,謝謝@stefan! –
如果您找到答案,請更正,並確保將其標記爲接受的答案。 –