如何在grunt-express中添加--harmony节点标志

6

我正在使用grunt-express进行本地开发。

这是我的GruntFile.js文件:

var path = require('path');

module.exports = function(grunt){
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify:{
      options:{
        banner:'/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      }
    },
    express:{
      server:{
        options:{
          debug:true,
          server: path.resolve('app.js') 
        }
      }
    },
    env : {
      options:{

      },
      dev : {
          NODE_ENV : 'development'
      },
      prod : {
          NODE_ENV : 'production'
      }
    },
    mochaTest:{
        test:{
             options:{
                reporter:'spec'
             },
             src:['tests/*.js']
        }
    }

  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-express');
  grunt.loadNpmTasks('grunt-env');
  grunt.loadNpmTasks('grunt-mocha-test');
  grunt.loadNpmTasks('grunt-shell');


  // tasks
  grunt.registerTask('start', ['env:dev', 'express', 'express-keepalive']);
  grunt.registerTask('stop', ['express-stop']);
  grunt.registerTask('test', 'mochaTest');


};

我使用

grunt start

启动本地服务器,但我需要向node可执行文件添加--harmony标志。

我该如何做?

4个回答

12

您需要使用npm install grunt-cli在本地安装grunt-cli,npm会将grunt二进制文件放置在./node_modules/.bin/grunt

有了这个,您可以使用以下命令运行grunt:node --harmony ./node_modules/.bin/grunt start

将该命令放入您的package.json脚本中:

{
  "scripts": {
    "start": "node --harmony ./node_modules/.bin/grunt start"
  }
}

然后只需键入npm start


没有真正的区别。输入 grunt 的效果等同于 /usr/local/bin/node /usr/local/bin/grunt(路径因环境而异)。因此,可以执行 /usr/local/bin/node --harmony /usr/local/bin/grunt start,但路径可能因机器而异。利用 npm 解决路径差异是更好的策略。 - Kyle Robinson Young
1
你调用命令的方式和它对你的架构产生影响是有区别的。一个是输入“grunt”,另一个是输入“npm start”。当你这样使用时,它们都应该是任务运行器。实际上,你可以直接这样做。http://gruntjs.com/frequently-asked-questions#options - ulisesrmzroche
你不能通过 grunt bin 设置 node cli 选项(其中包括 --harmony)。你提供的链接并不是解决方案。那只是针对 Grunt 选项而不是 Node.js 选项。看一下 grunt bin,你会发现命令 grunt 实际上是作为 node grunt 运行的(因为它是一个 node 二进制文件)。 - Kyle Robinson Young
@KyleRobinsonYoung - 我发现运行形式为“npm run start”的命令对我有效,而“npm start”则无效。不过还是感谢您提供了一个好的答案。有一个问题 - 如果我想在Jetbrains Webstorm IDE的Grunt控制台中启用harmony选项来运行grunt任务..是否可行?明显的问题是在这种情况下我无法向下委派到node来显式调用grunt。再次说明,如果您不是Webstorm用户,请忽略此问题。 - arcseldon
@arcseldon ./node_modules/.bin/grunt 是有意的。这是由npm生成的bin路径。bin路径./node_modules/grunt-cli/bin/grunt可能会改变,而npm生成的路径不会改变。关于npm start无法工作的问题很奇怪,它应该可以(也许您的npm版本不同?)。我对Webstorm一无所知,抱歉。 - Kyle Robinson Young
显示剩余3条评论

1
如果您仍希望使用全局的grunt-cli安装(而不是本地安装),请像这样调用(使用Bash):node --harmony $(which grunt) target

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接