4

次の方法でgrunt-browserifyを使用しています。

   browserify:
      build:
        files:
          '<%= paths.staticJS %>/Login.js'                : '<%= paths.buildSrcJS %>/modules/login/Login.js'
          '<%= paths.staticJS %>/Password.js'             : '<%= paths.buildSrcJS %>/modules/password/Password.js'
          '<%= paths.staticJS %>/RequestPasswordReset.js' : '<%= paths.buildSrcJS %>/modules/password/RequestPasswordReset.js'
          '<%= paths.staticJS %>/ResetPassword.js'        : '<%= paths.buildSrcJS %>/modules/password/ResetPassword.js'
          '<%= paths.staticJS %>/ClientRouter.js'         : '<%= paths.buildSrcJS %>/shared/ClientRouter.js'

通常は正常に動作していますが、まだ問題があります。コードの一部で、次のrequireようなノード モジュールを使用しています。

  chartViewPath = "../../charts/view/#{chartViewName}"
  resolvedPath = require.resolve(chartViewPath)
  chartViewModule = require.modules[resolvedPath]

そして、私は次のエラーが発生しています:require.resolve is not a function

grunt タスクでエイリアスを使用してグローバルな require を公開しようとしました:

  options:
    alias: [
      '<%= paths.buildSrcJS %>/modules/login/Login.js:Login'
      '<%= paths.buildSrcJS %>/modules/password/Password.js:Password'
      '<%= paths.buildSrcJS %>/modules/password/RequestPasswordReset.js:RequestPasswordReset'
      '<%= paths.buildSrcJS %>/modules/password/ResetPassword.js:ResetPassword'
      '<%= paths.buildSrcJS %>/shared/ClientRouter.js:ClientRouter'
    ]

require変数を関数として公開しますが、require.resolveまたはmodulesメソッドをまだ使用できません。

また、grunt に移行する前にファイルに使用Cakefileしていたことにも言及する必要がありますBrowserify

task 'build','build for development environment', (options)->

  fs = require 'fs'
  path = require 'path'
  browserify = require 'browserify'
  routers = [ "modules/login/Login","shared/ClientRouter","modules/password/Password","modules/password/RequestPasswordReset", "modules/password/ResetPassword" ]
  routers.forEach((r)->
    jsSource = path.resolve(__dirname + "/src/main/#{r}.coffee")
    jsDestination = path.resolve( "#{__dirname}/../static/js/#{r.split('/').slice(-1)}.js" )
    browserified = browserify(jsSource, { entry : [] }).bundle()
    fs.writeFile(jsDestination, browserified, (err)-> if err then console.log "error writing file:#{err}")
  )

そして、このようにして正常に動作しており、使用できますrequire.resolverequire.modules 何らかの理由で、このようにbrowserifyが各エントリファイルの先頭にこれらのメソッドを追加しているためです

4

1 に答える 1

1

grunt-browserify以前使用していたバージョンとは異なる のバージョンに依存している可能性がありますbrowserifynpm ls以前に持っていたバージョンを調べて、必要なものと異なるかどうかを確認するために使用しますgrunt-browerify

それ以外は、元のスクリプトと Grunt プラグインがしようとしていることの間に大きな違いは見られませんでした。

于 2013-12-06T06:40:52.417 に答える