0

これは私の入力ファイルです (yeoman-angular を使用)

  <!-- build:js(./) scripts/vendor.js -->
  <!-- bower:js -->
  <script src="bower_components/angular/angular.js"></script>
  ...
  <script src="bower_components/pagedown-semantic-ui/pagedown.js"></script>
  <!-- endbower -->
  <!-- endbuild -->

そして、すべてのファイルを単一のファイルにコンパイルしvendor.xxxx.js、html を次のように置き換えます。

<script src="scripts/vendor.f5d9f6b9.js"></script>

ただし、ここでのパスは相対パスであり、絶対パスが必要です。さらに、Angular アプリはノード サーバーのサブディレクトリ (dashboard/) にあるため、nignx を使用して必要なものをリダイレクトしています。私は…したい:

<script src="/dashboard/scripts/vendor.f5d9f6b9.js"></script>

ただし、スクリプト ファイル自体は変更しないでください。

4

1 に答える 1

4

あなたの質問は usemin に関連しています。こちらのドキュメントを参照してください: https://github.com/yeoman/grunt-usemin

index.html のコメントを次のように置き換えます。

<!-- build:js(./) /dashboard/scripts/vendor.js -->

つまり:

<!-- build:PATH_WHERE_TO_FIND_FILES DESTINATION_PATH -->

ngmin を ngAnnotate に置き換えるには:

Gruntfile を変更します。

交換:

// ngmin tries to make the code safe for minification automatically by
// using the Angular long form for dependency injection. It doesn't work on
// things like resolve or inject so those have to be done manually.
ngmin: {
  dist: {
    files: [{
      expand: true,
      cwd: '.tmp/concat/scripts',
      src: '*.js',
      dest: '.tmp/concat/scripts'
    }]
  }
},

ngAnnotate: {
    options: {
        singleQuotes: true
    },
    dist: {
        files: [{
            expand: true,
            cwd: '.tmp/concat/scripts',
            src: '*.js',
            dest: '.tmp/concat/scripts'
        }]
    }
},

そして置き換えます:

grunt.registerTask('build', [
    'clean:dist',
    'wiredep',
    'useminPrepare',
    'concurrent:dist',
    'autoprefixer',
    'concat',
    'ngmin',
    'copy:dist',
    'cdnify',
    'cssmin',
    'uglify',
    'filerev',
    'usemin',
    'htmlmin'
]);

に:

grunt.registerTask('build', [
    'clean:dist',
    'wiredep',
    'useminPrepare',
    'concurrent:dist',
    'autoprefixer',
    'concat',
    'ngAnnotate',
    'copy:dist',
    'cdnify',
    'cssmin',
    'uglify',
    'filerev',
    'usemin',
    'htmlmin'
]);

次の 2 つのコマンドを実行して、package.json を変更します。 1. npm uninstall grunt-ngmin --save 2. npm install grunt-ng-annotate --save

于 2014-08-20T11:19:01.653 に答える