2015-06-20 43 views
7

我以编程方式调用webpack。在我称之为的时候,我有一个设置对象,我想将它作为一个模块包含在webpack中。这可能吗?在webpack config中提供模块定义

我正在寻找类似于DefinePlugin的东西,但我想定义一个模块,而不是自由变量。

我的应用程序代码,app.js,看起来是这样的:

var settings = require('settings'); 
console.log('Build number is', settings.buildNumber); 

我的WebPack亚军,webpack-runner.js

var settings = { 
    buildNumber: 100 
}; 

// Can I pass settings into webpack config such that 
// app.js will be able to access it with require('settings')? 

var config = { 
    entry: "./app.js", 
    output: { 
    path: __dirname, 
    filename: "build.js" 
    } 
}; 

webpack(config, function(err, stats) { 
    console.log(stats.toString()); 
}); 

目前,我发现这样做的唯一方法是保存我的设置到一个文件,然后为该文件的路径设置一个别名。但是我想避免保存一个文件,以便稍后让webpack打开它。

回答

-1

是的,只需要在您的设置文件中。下面的例子。

// settings.js 
module.exports = { 
    buildNumber: 100 
}; 

// webpack.config.js 
var settings = require('./settings'); // settings.buildNumber => 100 

var config = { 
    entry: './entry.js', 
    output: { 
    path: __dirname, 
    filename: 'build.js' 
    } 
}; 

webpack(config, function(err, stats) { 
    console.log(stats.toString({ 
    colors: true, 
    modules: true, 
    chunkModules: true 
    })); 
}); 
+0

我想我的问题还不清楚,所以我编辑了它。我正在寻找一种方法将设置变量传递到我的webpack配置中,然后通过“require('settings')”在app.js中访问它。 – Andrew

+0

@Andrew为什么不只需要app.js和webpack.config.js中的文件? –

+1

我的设置是以编程方式生成的,所以没有文件。我目前的解决方法是将设置保存到一个文件,然后需要它们 - 但这正是我想要避免的。 – Andrew