次の方法で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.resolve
。require.modules
何らかの理由で、このようにbrowserifyが各エントリファイルの先頭にこれらのメソッドを追加しているためです。