javascript - 如何使用 Karma 配置 browserify 以将转换 Stringify 用于 Mustache 模板?

标签 javascript karma-runner mustache browserify stringify

我有一个项目,我使用 browserify 来管理我的依赖项。我使用 Backbone with Mustache 作为客户端的模板引擎。要需要 Mustache 模板,我必须使用 Stringify像下面这样正确地需要 Mustache 模板:

gulp.task('scripts', function() {
    gulp.src(['./js/app.js'])
        .pipe(browserify({
          transform: stringify({
            extensions: ['.html'], minify: true
          })
        }))
        .pipe(gulp.dest('dist/assets/js')) });

现在,我的测试正在使用 browserify 在 Karma 上运行。但是,当我尝试要求模板 Karma 失败时,会抛出 HTML 文件解析错误。

例如:

var Template = require('../Templates/CodeEditor.html'); var CodeEditor
= Backbone.View.extend({

    el: '#CodeEdit',

    editor: {},     currentPreviewMode: "default",

    template: function() {
        return Mustache.to_html(Template, this.model.toJSON());
} });

是否可以配置 Karma 以使用 Stringify?如果是这样怎么办?请帮忙。

下面是我的 Kara 配置。

module.exports = function(config) {   config.set({
    basePath: './js/',
    frameworks: ['browserify', 'jasmine'],
    browserify: {
      debug: true,
      transform: [ 'brfs', 'browserify-shim']
    },
    files: [
        '**/**/*.js'
    ],

    exclude: [],
    preprocessors: {
      'modules/**/*.js': [ 'browserify' ]
    },
    reporters: ['dots'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
     autoWatch: true,
    browsers: [ 'PhantomJS' ],
    singleRun: false   }); };

以及package.json的一部分供引用:

  "devDependencies": {
    "brfs": "^1.4.0",
    "browserify": "^9.0.3",
    "browserify-shim": "^3.8.3",
    "chai": "^2.2.0",
    "del": "^1.1.1",
    "gulp": "^3.8.11",
    "gulp-autoprefixer": "^2.1.0",
    "gulp-browserify": "^0.5.1",
    "jasmine": "^2.2.1",
    "jasmine-core": "^2.2.0",
    "karma": "^0.12.31",
    "karma-browserify": "^4.1.2",
    "karma-chrome-launcher": "^0.1.7",
    "karma-phantomjs-launcher": "^0.1.4",
    "karma-jasmine": "^0.3.5",
    "map-stream": "0.0.5",
    "stringify": "^3.1.0"


  },

  "browserify-shim": {
    "jQuery": "global:jQuery",
    "Backbone": "global:Backbone"
  }

谢谢

最佳答案

看看这个。可能就是您正在寻找的。

只需添加

browserify: {
    transform: ['stringify']
},

到你的 karma.conf.js (并确保将 stringify 安装为节点模块)

https://gist.github.com/busypeoples/e4ec7e7c1f1a753050dd

更新: 您还可以向转换本身添加选项,例如

transform: [
    ['stringify', {extensions: ['.java'], minify: true}]
]

https://github.com/Nikku/karma-browserify#transforms

关于javascript - 如何使用 Karma 配置 browserify 以将转换 Stringify 用于 Mustache 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29444056/

相关文章:

javascript - jquery 无法使用超过 1 个函数

javascript - 对 PHP 和 MySQL 中的特定评论进行评级

javascript - 为 React Component Props 解构 ImmutableJS Map

unit-testing - AngularJS 测试 promise 在 promise 中被调用

javascript - 测试手动引导的 Angularjs 应用程序

javascript - $browser.$$checkUrlChange 在 Jasmine 测试中未定义

javascript - 使用express-expose和Handlebars.js给了我意外的 token &

javascript - 在 Mustache 模板中的 {{# ... }} 之前放置一个大括号

java - 如何使用 YML 配置禁用 Mustache 文件中的 anchor 元素?

javascript - 允许用户在上下文中修改导入的 ES6 模块函数