访问browserify -r params in karma

时间:2016-10-24 09:17:44

标签: karma-runner browserify

我使用package.json脚本块中的npm调用browserify。这是脚本的缩写版本。

"build:js": "browserify -r ./config.js:config -e -d src/index.js > build/index.js"

一切都很好。在index.js中,我只是使用:require('config')来引用这个参数,而浏览器会完成其余的工作。

现在我试图用browserify设置业力进行测试,而karma-browserify无法找到该变量。我已经环顾四周并且找不到多少,但是尝试将require: ['./src/app/config/config-dev.js']添加到browserify对象中的karma.conf.js,如下所示:

browserify: {
    debug: true,
    require: ['./src/app/config/config-dev.js']
}

但是业力并没有将索引中的require语句与参数文件之间建立起来,如果没有别的话,那么因为它没有被命名。我需要知道的是当我使用browserify CLI添加一个参数时karma的语法。

任何指向文档的指针解释这个或关于我可以尝试的内容的想法将是非常有帮助的。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试将您的要求分辨率添加到"browser" field下的package.json

E.g:

"browser": {
  "config": "./config"
}

答案 1 :(得分:0)

如果您尝试根据您的环境设置不同的配置,则可以执行以下操作:

./config.js

if (process.env.NODE_ENV === 'production') {
  module.exports = { /* production config */ };
} else if (process.env.NODE_ENV === 'development') {
  module.exports = { /* development config */ };
} else if (process.env.NODE_ENV === 'test') {
  module.exports = { /* test config */ };
}

然后在你的package.json中你会有类似的东西:

"scripts": {
   "build:js": "NODE_ENV=production browserify -d -e src/index.js",
   "test": "NODE_ENV=test karma"
},
"browserify": {
  "transform": [
    "envify"
  ]
}

envify是一个关键部分,它允许您直接在代码中用字符串替换环境变量。例如:process.env.NODE_ENV === 'development'可能只是'development' === 'development'。然后可以使用像uglifyjs这样的缩小工具删除这些内容。