2013-06-02 84 views
7

我試圖在從Sass編譯時自動上傳.css文件。這是我在Gruntfile.js得:Grunt - 當文件被改變時觀察文件和SFTP

module.exports = function(grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    watch: { 
     coffee: { 
     files: ['**/*.coffee'], 
     tasks: ['coffee'] 
     }, 
     scripts: { 
     files: ['**/*.scss'], 
     tasks: ['compass'] 
     }, 
     sftp: { 
     files: ['**/*.css'], 
     tasks: ['sftp-deploy'] 
     } 
    }, 
    coffee: { 
     compile: { 
     files: { 
      'testing.js': 'testing.coffee' 
     } 
     } 
    }, 
    compass: { 
     dist: { 
     options: { 
      config: 'config.rb' 
     } 
     } 
    }, 

    'sftp-deploy': { 
     build: { 
     auth: { 
      host: 'example.com', 
      port: 22, 
      authKey: 'key2' 
     }, 
     src: 'styles/', 
     dest: 'styles/', 
     exclusions: ['**/.DS_Store'], 
     server_sep: '/' 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-contrib-coffee'); 
    grunt.loadNpmTasks('grunt-contrib-compass'); 
    grunt.loadNpmTasks('grunt-sftp-deploy'); 


    // Default task(s). 
    grunt.registerTask('default', ['watch']); 

}; 

它編譯.css但似乎並沒有把它上傳。有任何想法嗎?

+0

'config.rb'輸出已編譯的'css'到什麼目錄? –

+0

你不應該在本地執行此操作,然後只在運行構建步驟時才推送? –

回答

1

我正在嘗試使用grunt-sftp做幾乎完全相同的事情,並遇到類似的錯誤。日誌記錄是不是最好的,所以我結束了使用grunt-shell和剛跑scp在編譯:

watch: { 
    tumblr: { 
     files:['sass/*.scss', 'sass/*/*.scss'], 
     tasks: [ 'compass:tumblr', 'shell:tumblr' ] 
    } 
}, 

shell: { 
    tumblr: { 
    command: 'scp -P 2222 -r stylesheets "[email protected]:/var/www/foo/directory"' 
    } 
} 

這工作就像一個魅力。

2

我想確認下面的grunt-ssh(https://github.com/andrewrjones/grunt-ssh)任務配置對我來說工作得很好。請注意,grunt接受可能有助於調試的--verbose選項。請注意,從v0.6.2開始,grunt-ssh SFTP任務似乎不支持sshconfig語法,這在幫助頁面中不是很清楚。

sftpCredentials: grunt.file.readJSON('sftp-credentials.json'), 
    sftp: { 
     deploy: { 
      files: { 
       "./": "deploy/**" 
      }, 
      options: { 
       "path": "<%= sftpCredentials.path %>", 
       "host": "<%= sftpCredentials.host %>", 
       "username": "<%= sftpCredentials.username %>", 
       "port": "<%= sftpCredentials.port %>", 
       "password": "<%= sftpCredentials.password %>", 
       "srcBasePath": "deploy/", 
       "createDirectories": true 
      } 
     } 
    } 
+0

使用'grunt-ssh',您如何設置手錶以便僅上載已更改的文件? – mpen

+0

我從手動啓動的grunt任務上傳文件(我用它將我的新版本上傳到一個新的空文件夾中)。我看到你已經爲此創建了單獨的問題,希望最終能夠在那裏回答! :) – sbat

相關問題