Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于文件扩展名的多个网页包生成_Javascript_Webpack - Fatal编程技术网

Javascript 基于文件扩展名的多个网页包生成

Javascript 基于文件扩展名的多个网页包生成,javascript,webpack,Javascript,Webpack,我想知道是否有可能在Webpack中获得类似react native如何处理基于扩展名:.ios.js和.android.js的ios/android构建的构建配置 要详细说明,鉴于此目录结构: app/ index.js components/ button.web.js button.mobile.js 我想买一个 build/ web/app.js mobile/app.js 有没有人知道这在webpack中是否可行 是,使用resolve.extens

我想知道是否有可能在Webpack中获得类似react native如何处理基于扩展名:.ios.js和.android.js的ios/android构建的构建配置

要详细说明,鉴于此目录结构:

app/
  index.js
  components/
    button.web.js
    button.mobile.js
我想买一个

build/
  web/app.js
  mobile/app.js

有没有人知道这在webpack中是否可行

是,使用
resolve.extensions
。例如,此网页包配置代码段:

resolve: {
  extensions: ['', '.js', '.mobile.js']
}
当遇到
require('./button')
时,将导致网页包查找
button
button.js
,最后查找
button.mobile.js
。可以将扩展名设为命令行参数。例如,如果将
yargs
添加到项目中,并在网页包配置文件中使用它:

const argv = require('yargs').argv;
... {
    resolve: {
        extensions: ['', '.js', '.' + argv.target + '.js']
    }
}
然后,
webpack--target=mobile
也将在捆绑包中包含
.mobile.js
文件,同样对于
webpack--target=web
或任何其他目标

请注意,如果
button.js
button.mobile.js
都存在,则需要找到第一个,其余的都将被忽略。如果您同时拥有组件的公共部分和特定于平台的部分,则必须将这两个部分放入具有不同名称的文件中,并且
需要
这两个部分-例如
button.js
button platform.mobile.js
;然后
var-button=require('./按钮');var buttonPlatform=require(“./按钮平台”)
并将两者合并

编辑:回答问题的第二部分

同样,可以使用
yargs
-将上面的
--target
参数插入网页配置的
输出
部分,即可创建所需的输出文件夹结构:

output: {
  path: path.join(__dirname, argv.target);
  filename: 'app.js'
}

@StefanDragnev如何导入
按钮
组件<代码>从“组件/按钮”导入按钮
?嗯,是的。如果这是你要问的,没有扩展名z