Yeoman - 多个应用程序,共享依赖项

时间:2014-08-04 13:48:28

标签: gruntjs yeoman bower

我刚开始使用Yeoman,我正在开发一个至少有两个应用程序的项目 - 一个用于网站的前端,另一个用于管理面板。它在Backbone中,但我认为那部分是无关紧要的。 我很清楚如何使用Yeoman设置一个应用程序。但是当两个应用程序共享相同的依赖关系时(例如,骨干,下划线等),你如何设置两个? 似乎找不到这个答案。

1 个答案:

答案 0 :(得分:2)

您可以创建两个应用文件夹 - app1和app2。依赖项node_modules和bower_components将位于根级别。见下面的结构:

YourApp
  - node_modules
  - bower_components
  - app1
  - app2
  - bower.json
  - package.json
  - GruntFile.js

运行grunt任务来构建应用程序时。它基本上在appPath中查找关键bower.json。您可以将此键值设置为要构建的文件夹的名称。 另一种方法是在GruntFile.js中进行一些修改,以便为构建不同的app文件夹分别执行grunt任务。请参阅以下代码:

  // Configurable paths for the application
  var appConfig = {
    app: require('./bower.json').appPath || 'app',
    app1: 'app1',  // Added new App1 here.. Similarly you can add multiple keys here.
    dist: 'dist'
  };   

添加了一个新的子任务livereload1,它将监视app1目录中的更改

  livereload1: {
        options: {
          open: true,
          middleware: function (connect) {
            return [
              connect.static('.tmp'),
              connect().use(
                '/bower_components',
                connect.static('./bower_components')
              ),
              connect().use(
                '/app/styles',
                connect.static('./app/styles')
              ),
              connect.static(appConfig.app1) // your new appConfig path
            ];
          }
        }
      }

注册新任务app1以构建app1文件夹

 grunt.registerTask('app1', 'Compile then start a connect web server', function (target) {
        grunt.task.run([
          'clean:server',
          'wiredep',
          'concurrent:server',
          'autoprefixer:server',
          'connect:livereload1',
          'watch'
        ]);
      });

同样,您可以为Test或Dist等创建新任务。