7

プロジェクトでPaper.jsの Bower パッケージを使用しています。ブラウザー用のプロジェクトを準備するために Gulp を使用しています。ただし、bower_components/paper/dist/paper-full.min.js には次のような文字がいくつかあります。

\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec...

Gulpを通過した後、次のようになります。

ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮ...

のコンソールエラーが発生する

キャッチされていない SyntaxError: 無効な正規表現: /[âªâµâºã€-ã–ã˜-ã¶ã¸-ˈ-Ë'Ë -ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ- ΊΌΎ-Ρ[もっと変な文字がいっぱい] 文字クラスの範囲が間違っています

これが私のgulpファイルの関連するチャンクです:

var gulp = require('gulp');
var stylus = require('gulp-stylus');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var browserify = require('browserify');
var reactify = require('reactify');
var source = require('vinyl-source-stream');
var jade = require('gulp-jade');
var nib = require('nib');
var del = require('del');

var cfg = require('./cfg.json');

var action = {
  clean: function(cb){
    del([
      ['./', cfg.dir.root.dev].join('')
    ], cb);
  },
  concatLibs: function(){
    gulp.src([
      './bower_components/jquery/dist/jquery.min.js',
      './bower_components/react/react.js',
      './bower_components/when/es6-shim/Promise.js',
      './bower_components/lodash/lodash.min.js',
      './bower_components/postal.js/lib/postal.min.js',
      './bower_components/oboe/dist/oboe-browser.min.js',
      './bower_components/paper/dist/paper-full.min.js'])
      .pipe(uglify())
      .pipe(concat('lib.js'))
      .pipe(gulp.dest(['./', cfg.dir.root.dev, cfg.dir.type.js].join('')));
  },
...

問題をプロセスのこの部分に分離しました。

.pipe(uglify()) // in the concatLibs action

つまり、この行をコメントアウトしても異常な文字は生成されず、コンソール エラーも発生しません。

uglify()メソッドは正規のもののようで、次のように必要です: var uglify = require('gulp-uglify')。だから問題は何ですか?なぜuglify()これを引き起こしているのですか?

4

2 に答える 2

0

ここでの問題は、既に縮小されたライブラリを醜くしているようです。

より良いアプローチは、サードパーティのライブラリに触れず、それらをそのまま連結することです。これは、可能な限り、ライブラリの縮小されたソースを含める必要があることを意味します。react.jsこれで、との縮小されていないバージョンができましPromise.jsた。

react と es6-shim の両方が縮小バージョンを提供します。これは、bower install. これを修正するには、タスクは次のようになります。

...
concatLibs: function(){
    gulp.src([
      './bower_components/jquery/dist/jquery.min.js',
      './bower_components/react/react.min.js',
      './bower_components/when/es6-shim/Promise.min.js',
      './bower_components/lodash/lodash.min.js',
      './bower_components/postal.js/lib/postal.min.js',
      './bower_components/oboe/dist/oboe-browser.min.js',
      './bower_components/paper/dist/paper-full.min.
      .pipe(concat('lib.js'))
      .pipe(gulp.dest(['./', cfg.dir.root.dev, cfg.dir.type.js].join('')));
  }
...

これlib.jsにより、最小限の変更で縮小されたサードパーティ ライブラリのみが提供されますgulpfile.js

于 2016-01-14T09:32:20.957 に答える