javascript - gulp-usemin 不输出 js 文件

标签 javascript node.js gulp gulp-uglify gulp-usemin

我正在尝试使用 gulp-usemin 来捆绑我的 CSSjavascript 文件以用于生产。 gulp-usemin 在我的 CSS 文件上运行良好,但没有输出与我的 javascript 文件相关的任何内容。有人可以指出我做错了什么吗?

我遇到了类似于 uglified files are not rewritten in html file using gulp-usemin 的问题,但建议的解决方案不起作用。

作为引用,我的node版本是v0.12.1,我的gulp版本如下:

"devDependencies": {
  "gulp": "^3.9.1",
  "gulp-minify-css": "^1.2.4",
  "gulp-rev": "^7.1.2",
  "gulp-uglify": "^2.0.0",
  "gulp-usemin": "^0.3.24"
}

index.html

<html>
<head>
  <meta charset="utf-8">

  <!-- build:css css/site.css -->
  <link rel="stylesheet" href="stylesheets/style.css" type="text/css" media="all" />
  <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css" type="text/css" media="all" />
  <!-- endbuild -->

  <!-- build:js js/site.js -->
  <script type="text/javascript" src='bower_components/gsap/src/minified/TweenMax.min.js'> </script>
  <script type="text/javascript" src='bower_components/d3/d3.js'> </script>
  <script type="text/javascript" src='bower_components/d3-tip/index.js'> </script>
  <script type="text/javascript" src='bower_components/moment/moment.js'> </script>
  <script type="text/javascript" src='chart.js'> </script>
  <!-- endbuild -->

</head>
<body>

</body>
</html>

gulp 文件

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var usemin = require('gulp-usemin');
var minifyCss = require('gulp-minify-css');

gulp.task('build', function() {
  return gulp.src(['index.html'])
    .pipe(usemin({
      css: [minifyCss()],
      js: [uglify()]
    }))
  .pipe(gulp.dest('dist/'));
});

运行 gulp build 后,我生成了一个 dist 目录,如下所示

dist/
  css/
    site.css
  index.html

我生成的index.html是

<html>
<head>
  <meta charset="utf-8">

  <link rel="stylesheet" href="css/site.css" media="all"/>

</head>
<body>

</body>
</html>

有什么明显的我遗漏的东西吗?为什么 css block 可以工作,但 js block 却默默地失败了?

最佳答案

regexgulp-usemin 使用开头 <script> 之间不允许有任何空格和关闭</script>标签。它也不允许 type="text/javascript"属性。

参见 this regex101 page一个匹配和不匹配的例子。

所以这样:

<!-- build:js js/site.js -->
<script type="text/javascript" src='bower_components/gsap/src/minified/TweenMax.min.js'> </script>
<script type="text/javascript" src='bower_components/d3/d3.js'> </script>
<script type="text/javascript" src='bower_components/d3-tip/index.js'> </script>
<script type="text/javascript" src='bower_components/moment/moment.js'> </script>
<script type="text/javascript" src='chart.js'> </script>
<!-- endbuild -->

应该是这样的:

<!-- build:js js/site.js -->
<script src='bower_components/gsap/src/minified/TweenMax.min.js'></script>
<script src='bower_components/d3/d3.js'></script>
<script src='bower_components/d3-tip/index.js'></script>
<script src='bower_components/moment/moment.js'></script>
<script src='chart.js'></script>
<!-- endbuild -->

关于javascript - gulp-usemin 不输出 js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39045541/

相关文章:

javascript - 在 MVC 4 中使用具有大数据的 Web Worker 时 IE 11 崩溃

javascript - 如何在 React 中使用 Material UI 定义背景图像来填充屏幕并删除左侧和右侧的边缘?

javascript - 从javascript表中删除行的不同方法

javascript - 数组在 node.js 上作为字符串发送

node.js - 如何处理集群中基于时间的事件?

cordova - 无法运行 sass 任务 : missing in gulpfile. js

javascript - 使用提交按钮将 jquery 值传递给 php

javascript - npm publish 忽略 node_modules 中的文件

javascript - Reactify、Browserify 和 Gulp : TypeError: Object #<Transform> has no method 'transform'

javascript - 检查是否存在多个文件夹?