使用gulp和wiredep,socket.io没有添加到index.html(即使它在bower.json中)

jav*_*ttt 4 html javascript socket.io gulp wiredep

我的bower.json文件中有angular,angular-ui-router和socket-io.

当我运行我的gulp文件(使用wiredep)时,两个角度脚本成功添加到我的index.html文件,但socket.io脚本不是 - 我无法弄清楚原因.谢谢你的帮助

//命令行

[21:56:06] Using gulpfile ~/dev/projects/ecommerceVidChat/gulpfile.js
[21:56:06] Starting 'default'...
[21:56:06] Starting 'bower-dependencies'...
[21:56:06] Finished 'bower-dependencies' after 6.24 ms
[21:56:06] Finished 'default' after 7.24 ms
Run Code Online (Sandbox Code Playgroud)

//bower.json

  "dependencies": {
    "angular": "~1.3.13",
    "socket.io": "~1.3.4",
    "angular-ui-router": "~0.2.13"
  }
Run Code Online (Sandbox Code Playgroud)

// gulpfile.js

var gulp = require('gulp'),
    wiredep = require('wiredep').stream;

gulp.task('default', function() {
  gulp.start('bower-dependencies')
});

gulp.task('bower-dependencies', function () {  
  gulp.src('./build/index.html') 
    .pipe(wiredep({
      directory: './build/bower_components',
      bowerJson: require('./bower.json'),
    }))
    .pipe(gulp.dest('./build/'));
});
Run Code Online (Sandbox Code Playgroud)

//index.html

<!-- bower:js -->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<!-- endbower -->
Run Code Online (Sandbox Code Playgroud)

//package.json

"devDependencies": {
    "gulp": "^3.8.11"
  }
Run Code Online (Sandbox Code Playgroud)

Bal*_*zar 10

Socket.io本身没有bower支持,请记住它是服务器,而不是客户端.

您可以通过将其serveClient选项设置为套接字服务器来为客户端脚本提供服务true,并将其index直接插入到您的:

 <script src="socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

或者安装bower中引用但具有其他名称的客户端脚本:

bower install -save socket.io-client
Run Code Online (Sandbox Code Playgroud)

如果此软件包没有main属性,则必须在main中覆盖它bower.json:

"overrides": {
  "socket.io-client": {
    "main": "socket.io.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

这样,wiredep会自动将它注入你的index.html.

  • `"main":"dist/socket.io.js"`实际上可以正确使用wiredep (2认同)