我想在我的業力測試中使用DLLReferencePlugin
,我不完全確定如何使它工作。webpack dllplugin如何使用業力?
我已經放在vendors.js
和vendors-manifest.json
在src/static/
與libraryTarget=var
生成的DLL,它在我的dev的工作和生產的WebPack版本。我的開發/生產版本使用一個html文件,其腳本標記指向根路徑上的「vendors.js」。 dev/production構建將靜態文件夾中的所有文件複製到目標文件夾。因此腳本標籤可以找到vendors.js
。
但是,在運行我的測試時,我從PhantomJS:ReferenceError: Can't find variable: vendors
中得到一個錯誤。我想知道它是否找不到vendors.js
腳本標記?
如果來自DLL插件,我如何在我的karma配置中使用vendors.js
?
我是新來的業力,所以任何指導將不勝感激。
我試過了很多沒有結果的東西,包括把require('vendors.js')
放在我的測試條目文件中,使用解析別名將供應商的外部設置爲真,但由於我對業力知之甚少,所以感覺像我一樣幾乎在黑暗中拍攝。因此,任何幫助將不勝感激。
我的karma配置如下。這來自我使用的starter kit。我的測試文件也與該入門工具包相同。請讓我知道你是否需要任何其他信息來協助。謝謝!
const karmaConfig = {
basePath : '../', // project root in relation to bin/karma.js
files : [
{
pattern : `./test-bundler.js`,
watched : false,
served : true,
included : true
}
],
singleRun : !argv.watch,
frameworks : ['mocha'],
reporters : ['mocha'],
preprocessors : {
[`/test-bundler.js`] : ['webpack']
},
browsers : ['PhantomJS'],
webpack : {
devtool : 'cheap-module-source-map',
resolve : Object.assign({}, webpackConfig.resolve, {
alias : Object.assign({}, webpackConfig.resolve.alias, {
sinon : 'sinon/pkg/sinon.js'
})
}),
plugins : webpackConfig.plugins,
module : {
noParse : [
/\/sinon\.js/
],
loaders : webpackConfig.module.loaders.concat([
{
test : /sinon(\\|\/)pkg(\\|\/)sinon\.js/,
loader : 'imports?define=>false,require=>false'
}
])
},
// Enzyme fix, see:
// https://github.com/airbnb/enzyme/issues/47
externals : Object.assign({}, webpackConfig.externals, {
'react/addons' : true,
'react/lib/ExecutionEnvironment' : true,
'react/lib/ReactContext' : 'window'
})
},
webpackMiddleware : {
noInfo : true
},
coverageReporter : {
reporters : config.coverage_reporters
}
}
if (config.globals.__COVERAGE__) {
karmaConfig.reporters.push('coverage')
karmaConfig.webpack.module.preLoaders = [{
test : /\.(js|jsx)$/,
include : new RegExp(config.dir_client),
loader : 'babel',
query : Object.assign({}, config.compiler_babel, {
plugins : (config.compiler_babel.plugins || []).concat('istanbul')
})
}]
}