是的,使用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! –
如果您找到答案,请更正,并确保将其标记为接受的答案。 –