在项目文件夹外配置 gulp 捆绑目标文件夹

Configure the gulp bundling destination folder outside the project folder

我们已经使用 gulp 流程(使用 aurelia-bundler)捆绑了我们的应用程序。截至目前,捆绑过程目标文件夹位于名为 "dist" 的项目文件夹中。我们需要将目标文件夹放在项目文件夹之外

gulp.task('bundle', function (callback) {
runSequence('unbundle',
            'bundle-config',
            'copy-app-files',
            'compress',                
            function () {

            });

});

理论上,您只需更改build/paths.js文件的exportSrvRoot变量即可。例如:

//var exportSrvRoot = 'export/';
var exportSrvRoot = '../'; //this is outside of the project folder.

现在,gulp export 命令会将文件导出到项目文件夹上方的文件夹中。构建输出的解决方案相同 (gulp build/bundle),但您必须更改 outputRoot 变量而不是 exportSrvRoot.

但是,这种方法存在一个问题。由于您的导出文件夹在项目文件夹之外,如果您 运行 gulp export,您将收到一条错误消息,指出 gulp.del 无法删除项目文件夹之外的文件夹。这可以通过将附加参数传递给 gulp.del 来解决,但任务使用 vinyl-paths 调用 gulp.del,阻止您为其发送任何附加参数 =/。

解决上述问题的方法之一是删除导出的第36行-release.js:

// use after prepare-release
gulp.task('export', function(callback) {
  return runSequence(
    'bundle',
    //'clean-export', <---- this line
    'export-copy',
    callback
  );
});

这样,gulp export就不会尝试删除文件夹,避免出错。但是现在,您必须在每次 运行 gulp export.

之前手动删除导出文件夹

解决这个问题的另一种方法是重写 clean-export 任务,以便从 vinyl-paths.

中删除它的依赖性

希望对您有所帮助!