使用GruntJS过滤部署的文件

时间:2014-11-18 20:36:38

标签: node.js deployment gruntjs csproj

目前,我们使用的静态资源是Visual Studio中Web项目的一部分。项目中有一些我们想要的本地文件,我们不希望将其部署到生产环境中。我们通过使用.csproj文件并查看文件是否标记为“内容”或“无”等来管理它。(如果它标记为“无”,则不会在部署中被拉出来。)

这很好但是我们正在将我们的开发从Visual Studio转移到更友好的Javascript IDE中。但是,如果我们添加或删除文件,我们仍然需要返回到Visual Studio并更新.csproj文件以确保生产不会失去同步并且构建不会中断。

这让我思考,因为我们正在实现Node / Grunt,如果有一个插件可以处理同样的事情 - 服务器可以查看的白名单/黑名单方法并决定哪些文件到拿起哪些人离开。

我试过谷歌搜索但我没有太多运气弄清楚如何用它来表达,我希望有人知道如何做到这一点。我也愿意听到任何其他更好的方法来处理这个问题。那与环境无关。

1 个答案:

答案 0 :(得分:4)

Grunt附带内置file filters。你可以过滤任何东西,它非常强大。我无法在不看到您的Grunt任务的情况下提供特定的解决方案,但这里是grunt-copy任务的不同排除模式的示例:

copy: {
  dist: {
    files: [{
      expand: true,
      dot: true,
      dest: 'dist',
      src: [
        '*.{ico,png,txt}',
        'bower_components/**/*',
        'assets/images/{,*/}*.{webp}',
        'assets/fonts/**/*',
        'index.html',
        '!*.something',  // exclude all files with the extension .something
        '!.tmp/**/*'     // exclude all files recursively under .tmp directory
      ]
    }]
 }

Grunt使用node-glob,因此您可能需要浏览那里的文档以了解不同的模式。

我还要提到有插件可以在任何文件上执行字符串替换(例如grunt-replace)。通过这样的操作,您可以自动修改.csproj文件,以根据您的Grunt过滤器添加/删除文件(反之亦然)。

请原谅这个轶事,但作为一名前.NET开发人员,我依靠Visual Studio为我处理一切,我最初对Node.js进程的复杂性和明显的脆弱性感到恐惧。我给你的消息不会被吓倒,一旦我感到舒服,我意识到我已经控制了构建过程的各个方面,并且不再受VS的支配。这是我职业生涯中最自由的时刻,我没有回头。