奇妙的“browserify”,其作品像一个魅力。这是使用Arunda's NPM Atmosphere package,或using Npm.require with package.js替代,即可以说具有一定的优势:
- 我的代码可以使用普通的旧“规定”的,而不是Npm.require或Meteor.require。显然这并不是什么大问题,但如果我想在Meteor之外使用这个代码,很高兴感觉它不依赖于Meteor。
- 我不必担心Meteor是否会再次改变它对Npm整合的看法。
- 它允许我使用npm链接使用我自己的npm模块的本地开发版本。
下面是它如何工作的:
- 我在一个隐藏文件夹.npm
- 我用browserify创建将被流星
加载的bundle.js创建NPM依赖一个单独的项目
- 我用咕噜手表,以确保每次我安装一个新的NPM包,bundle.js更新
这里是我的目录结构:
my_meteor_project/
lib/
bundle.js
.npm/
node_modules
README.md
Gruntfile.js
entrypoint.js
package.json
这里的entrypoint.js的例子(不幸的是我必须使用全局变量,这样断言,URL和_流星的代码中)
assert = require('assert');
url = require("url");
_ = require('underscore');
这里的gruntfile:
module.exports = function(grunt) {
grunt.initConfig({
watch: {
build: {
files: ['./entrypoint.js', './package.json'],
tasks: ['browserify2'],
options: {
}
}
},
browserify2: {
compile: {
entry: './entrypoint.js',
compile: '../lib/bundle.js'
}
},
});
grunt.loadNpmTasks('grunt-browserify2');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('build', ['browserify2']);
};
然后我使用grunt手表来观察entry.js或新NPM安装的更改
$ cd .npm
$ grunt watch:build &
[2] 44617
$ Running "watch:build" (watch) task
Waiting...
然后,如果我安装NPM模块,或修改entrypoint.js,bundle.js更新:
$ npm install url -save
npm http GET https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/querystring
npm http 304 https://registry.npmjs.org/punycode
npm http 304 https://registry.npmjs.org/querystring
[email protected] node_modules/url
├── [email protected]
└── [email protected]
$ OK
>> File "package.json" changed.
Running "browserify2:compile" (browserify2) task
File written to: ../lib/bundle.js
Done, without errors.
Completed in 1.256s at Thu Jul 11 2013 11:36:22 GMT-0600 (MDT) - Waiting...
这可能是您的最佳选择:http://www.youtube.com/watch?v=kA-QB9rQCq8&feature=youtu.be其已经在流星的devel的分支,如果你使用的陨石,你可以使用它与ITLL达流星 – Akshat 2013-03-23 05:29:24
顺便说一句发动机分公司与分公司devel软件包的下一个版本,在过去2周 – Akshat 2013-03-23 07:51:36
@Akshat是已经合并为一段有这个工作的devel的稳定版本? – 2013-03-24 02:06:48