これは少し長いですが、私の混乱を説明するためにコード例が必要です。その後、次の回答に興味があります。
require('module')
またはの代わりにどのように使用しますrequire('../../src/module')
かrequire('./module')
?- 作業を複製せずに再利用
./index.js
するにはどうすればよいですか? (そして、エントリーモジュールであるため、実行をspec/specs.js
防ぎます)。src/app.js
私はすでにいくつかのブラウザー ベースのプロジェクトを開始しており、browserifyと grunt が大好きです。しかし、各プロジェクトは私の開発/学習曲線の同じ時点で終了します。ミックスにテストを追加し、2 つのbrowserifyバンドル (app.js
およびspec/specs.js
) を管理する必要があると、システム全体が崩壊します。説明します:
grunt-browserifyを使用して、初期ディレクトリを設定します。
.
├── Gruntfile.js
├── index.js (generated via grunt-browserify) [1]
├── lib
│ ├── jquery
│ │ └── jquery.js [2]
│ └── jquery-ui
│ └── jquery-ui.js [3]
├── spec
│ ├── specs.js (generated via grunt-browserify) [4]
│ └── src
│ ├── spec_helper.js (entry)
│ └── module_spec.js (entry)
└── src
├── app.js (entry)
└── module.js
- 1 つのエントリ ファイル ( ) を使用し、コード ウォークを実行して必要なすべてのモジュール
src/app.js
をバンドルします。 - エイリアスに browserify-shim を使用し
jquery
ます。 - シムなしでエイリアスされているだけ
jquery-ui
です( you の後に必要ですvar $ = require('jquery')
)。 - すべてのヘルパー ファイルとスペック ファイル
spec/src
をエントリ モジュールとして使用します。
構成をステップ実行します。
browserify: {
dist: {
files: {
'index.js': ['src/app.js']
}
}
}
// in app.js
var MyModule = require('./module'); // <-- relative path required?!
幸せ
jquery を追加します。
browserify: {
options: {
shim: {
jquery: {
path: 'lib/jquery/jquery.js',
exports: '$'
}
},
noParse: ['lib/**/*.js'],
alias: [
'lib/jquery-ui/jquery-ui.js:jquery-ui'
]
},
dist: {
files: {
'index.js': ['src/app.js']
}
}
}
// in app.js
var $ = require('jquery');
require('jquery-ui');
var MyModule = require('./module');
幸せ
仕様を追加します。
options: {
shim: {
jquery: {
path: 'lib/jquery/jquery.js',
exports: '$'
}
},
noParse: ['lib/**/*.js'],
alias: [
'lib/jquery-ui/jquery-ui.js:jquery-ui'
]
},
dist: {
files: {
'app.js': 'src/app.js'
}
},
spec: {
files: {
'spec/specs.js': ['spec/src/**/*helper.js', 'spec/src/**/*spec.js']
}
}
// in app.js
var $ = require('jquery');
require('jquery-ui');
var MyModule = require('./module');
// in spec/src/module_spec.js
describe("MyModule", function() {
var MyModule = require('../../src/module'); // <-- This looks like butt!!!
});
悲しい
要約すると、どうすれば...
- または?
require('module')
の代わりに使用します。require('../../src/module')
require('./module')
- 作業を複製せずに
./index.js
再利用できますか? (そして、エントリーモジュールであるため、実行をspec/specs.js
防ぎます)。src/app.js