微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gruntjs – Sails.js与React.js,如何正确执行?

我想在我的Sails.js应用程序中集成React.js browserify.

为此,我使用咕噜插件grunt-react.

我创建了一个文件/tasks/config/browserify.js

module.exports = function(grunt) {

  grunt.config.set('browserify',{
    //dev: {
      options:      {
        transform:  [ require('grunt-react').browserify ],extension: 'jsx'
      },app:          {
        src:        'assets/jsx/app.jsx',dest:       '.tmp/public/js/app.js'
      }
    //}
  });

  grunt.loadNpmtasks('grunt-browserify');
};

然后我在compileAssets.js和syncAssets.js中添加了一行:

// compileAssets.js

module.exports = function (grunt) {
    grunt.registerTask('compileAssets',[
        'clean:dev','stylus:dev','browserify',// <<< this added
        'copy:dev'
    ]);
};

// syncAssets.js

module.exports = function (grunt) {
    grunt.registerTask('syncAssets',[
        'stylus:dev',// <<< this added
        'sync:dev'
    ]);
};

然后我修改了一行在copy.js.

// copy.js

module.exports = function(grunt) {

    grunt.config.set('copy',{
        dev: {
            files: [{
                expand: true,cwd: './assets',src: ['**/*.!(styl|jsx)'],/// <<< this modified
                dest: '.tmp/public'
            }]
        },build: {
            files: [{
                expand: true,cwd: '.tmp/public',src: ['**/*'],dest: 'www'
            }]
        }
    });

    grunt.loadNpmtasks('grunt-contrib-copy');
};

它工作!

但是我觉得我没有做到这一点.

如果我取消注释行dev:{和}在/tasks/config/browserify.js这样:

module.exports = function(grunt) {

  grunt.config.set('browserify',{
    dev: {                           /// <<< this uncommented
      options:      {
        transform:  [ require('grunt-react').browserify ],dest:       '.tmp/public/js/app.js'
      }
    }                           /// <<< this uncommented
  });

  grunt.loadNpmtasks('grunt-browserify');
};

如果我在compileAssets.js和syncAssets.js中进行更改:

// compileAssets.js

module.exports = function (grunt) {
    grunt.registerTask('compileAssets','browserify:dev',// <<< this added :dev
        'copy:dev'
    ]);
};

// syncAssets.js

module.exports = function (grunt) {
    grunt.registerTask('syncAssets',// <<< this added :dev
        'sync:dev'
    ]);
};

这是行不通的!

值得担心吗?

为什么我在compileAssets.js和syncAssets.js文件添加browserify:dev时不起作用?

解决方法

我找到了正确的解决方案.

UPD:现在我们可以使用https://github.com/erikschlegel/sails-generate-reactjs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐