spmjs / spm-build Goto Github PK
View Code? Open in Web Editor NEWBuild tool for spm.
Build tool for spm.
像下面这样配置output可以正常build
"source":"js/",
"output":[
"app/app2/index/src/index.js"
]
而改过这样就不会合并依赖模块了,这是为啥呢
"source":"js/",
"output":[
"**/*"
]
甚至
_/_.js 这样
app/app2/index/src/.js 这样
都不行,感觉上一定要指定到最具体的路径才行,无法使用通配符
完成所有 spm build 的功能。
因为业务模块会经常变动,版本问题通过map时间戳解决.
所以我打算把业务模块就放在项目中,不部署到静态资源服务器上.
spm build输出路径默认为当前路径下创建dist目录,而我希望自定义输出路径.
查了好多资料,好多都不是spm2版本的.
只有下面这个命令是管用的
spm build -O static
但每次都输入后面的参数比较繁琐,能不能通过配置文件解决呢,在package.json中试了好多种办法都不行.以下是我的package.json
{
"family": "test",
"version": "0.0.1",
"name": "spmTest",
"spm": {
"idleading":"/seajs-simple-build/dist/",
"source":"js/",
"output":[
"app/app2/index/src/index.js"
],
"alias": {
"select2": "jquery/select2/3.4.5/select2-zh-cn",
"select2Css": "jquery/select2/3.4.5/select2.css"
}
}
}
似乎在Gruntfile.js 中 定义 build task:类似seajs hello
grunt.registerTask('build', [...]);
就完全放弃spm-build那些默认task及其配置了。
能不能接受默认build task定义,只是在其序列中增加如 less task。
在终端传入 version,被干掉了?
合并时忽略某个相对依赖呢,也没了?
windows xp 32位操作系统
我已经安装node,npm
并且已经配置好了环境变量Path和Node_Path,
安装好spm ,spm-build
该如何使用spm进行标准项目构建?
以该项目的example 为例
使用spm build命令时
没有生成dist文件夹,而且报出 error: $CWD\a.js not found
刚开始接触spm
,处理gbk编码文件时遇到乱码问题。
从spm build --help
里看到有个--encoding
选项:
--encoding [encoding] file encoding: [utf8]
设置成gbk
后读取gbk编码的文件还是会出现乱码。追了一下代码,发现初始化的配置只是传递给grunt.option
初始化,在后面读写文件的时候调用grunt.file.read/write
的时候并没指定编码,所以使用的还是默认的utf8
。
不知是否是我的使用方法有误。有没有比较好的办法解决这个问题?
我在本地临时的解决办法是修改grunt.file.read/write
中编解码部分代码:
contents = iconv.encode(contents, options.encoding || grunt.option('encoding') || file.defaultEncoding);
seajs在使用的时候需要一个配置文件或者配置项来控制alias等的一个对应关系,在使用spm-build来构建的时候在package.json中也会配置一个alias项来控制生成文件的依赖项的路径,那么在实际应用中,在对业务脚本进行构建生成后,代码中已经包含了require模块的完整路径,那么页面上是不是不再需要引用额外的配置文件了呢,只需要一个sea文件和相关的业务文件?在线等...
在清明假期,整理了下之前做的spm-打包测试,写了个小总结,不知道发在这里合不合适,有点长,全文如下:
在最开始,我并不知道grunt可以构建CMD模块.(以下spm指代spm build,spm版本2.2.5)当时正困惑于如何用spm方便的构建业务模块,后来看到@twinstony (感谢@twinstony的分享)使用grunt-cmd-xxx插件构建了CMD模块,跟着demo自己做了测试,的确可以构建,但是有一个问题:
grunt 方式不能把依赖的外部css(比如非项目中的jquery插件css)打包进来,而spm可以.
其原因是,spm会根据别名配置依次(./sea-mpdules -> ~/.spm/cache -> 源)查找并下载依赖,最后将依赖的css依赖打包进来(通过seajs.imporStyle).
而grunt并没有做这件事情,也许可以通过另一个grunt插件完成.
另,include这个参数是针对js模块的,对于css 而言则是"all"
还有一个不是问题的问题:
用grunt方式构建,参数配置项太多了,有时候找问题不太好找.或者说是过于灵活了,使开发者们无所适从.
而spm把很多东西都封装好了,只需配置简单几个参数即可,符合seajs简单一致的设计原则.
其实spm底层也是调用了grunt-cmd-transport以及其他模块,但把一些繁杂的配置帮我们处理好了
之前对于spm的困惑是:
1.打包出的模块id只能是family/version/name么? --通常业务模块并不需要这类命名
2.打包出的模块路径只能是直接输出到dist目录下? --不能像grunt那样,构建出来的目录结构与源文件的目录结构一致么?
3.输出目录不能指定么,只能是dist么? --如果可以指定,就可以直接省略掉部署环节(本地部署)
经过摸索与咨询,得出一个可行的解决方案,感谢@popomore 的指点
示例代码下载链接:
https://github.com/stoneChen/seajs-backbone-test/tree/master
(以下所有spm命令均在sea-modules的上一层目录下,即js下执行,package.json设置在这里)
A.所有模块部署在项目中.
以下以一个简单的示例(需要对backbone有一定了解)演示.
上图是目录结构.
sea-modules是spm默认的模块安装目录名.
为了开发方便,不必每次查看效果都要spm build一番,在开发阶段不使用spm打包代码,除源上的已成熟的组件外(可通过spm install安装都本地),均使用匿名模块查看页面效果.
上图是我把seajs结合backbone做的一个demo.
等所有功能开发完毕后,现在页面引入模块文件是这样的
seajs.use('start.js');
接着,进入打包阶段.
{
"family": "test",
"version": "0.0.1",
"name": "spmTest",
"spm": {
"idleading": "_output/",
"source": "sea-modules",
"output": [
"start.js",
"app/gettingStart.js",
"app/index.js",
"app/userlist.js",
"collection/C_userlist.js",
"model/M_gettingStart.js",
"model/M_index.js",
"model/M_user.js",
"view/V_gettingStart.js",
"view/V_index.js",
"view/V_user.js",
"view/V_userlist.js"
],
"alias": {
"$": "jquery/jquery/1.7.2/jquery",
"$-debug": "jquery/jquery/1.7.2/jquery-debug",
"jquery": "jquery/jquery/1.7.2/jquery",
"jquery-debug": "jquery/jquery/1.7.2/jquery-debug",
"select2": "jquery/select2/3.4.5/select2-zh-cn",
"select2-css": "jquery/select2/3.4.5/select2.css",
"select2-css-debug":"jquery/select2/3.4.5/select2-debug.css",
"underscore": "gallery/underscore/1.5.2/underscore",
"backbone": "gallery/backbone/1.1.0/backbone"
}
}
}
以上为package.json配置.
然后终端执行
spm build -O sea-modules/_output
如上图,然后_output目录就会被创建,相应目录结构的模块就会依次生成好.
然后改变页面上引入模块的路径,只需添加一个前缀即可:
seajs.use('_output/start.js'); //开发阶段是seajs.use('start.js');
之前开发好的功能,现在一样能够跑通,而且执行效率会更高.
下面,讲一下其中的注意点
package.json重点是idleading,source,output的配置
"idleading": "_output/",
"source": "sea-modules",
"output": [
"start.js",
"app/gettingStart.js",
"app/index.js",
"app/userlist.js",
"collection/C_userlist.js",
"model/M_gettingStart.js",
"model/M_index.js",
"model/M_user.js",
"view/V_gettingStart.js",
"view/V_index.js",
"view/V_user.js",
"view/V_userlist.js"
],
1.idleading如果不配置,那么生成出来的id就是family/version/name这种形式,这个值怎么配,需要与source,output配合,最终达到的效果就是最终加载这个模块的路径(require或use的参数)与生成的id值要一致,至于为什么,请参考seajs/seajs#930
2.source指定从当前目录下的哪个目录"查找"需要被构建的模块,这个官方文档有说明
3.output指定具体要被构建的模块,这里很重要,数组里的每个路径怎么写,生成出来的目录结构就是怎么样的.我曾经试过,将他们写成
"output": [
"start.js",
"app/*.js",
"collection/*.js",
"model/*.js",
"view/*.js"
],
但是前面提到那个css打包问题又出现了,而且模板文件也不打包了,好像是合并操作都失效了的感觉.这个就不知为何了,曾经提过issue,说是不支持这种写法.
4.执行build命令时指定 -O 的值,指定输出目录, 这个除了这种方式,不知道怎么在配置文件中解决,也提过issue,貌似需要自己实现.
5.还有一个奇怪的警告:
为啥会去找sea-debug?(后补:transport任务会转换source下所有文件,而sea-debug当然不是cmd模块,但是压缩版的sea.js也不是啊,怎么不警告?)
还有一点,下面那个152 files,貌似是对souce下的所有文件都进行transport了,但目标并不是全部,也就是说,实际上output的配置在transport后才起作用,是不是有些不太合理?
这样打包好后,结合seajs-debug,seajs-debug用于测试环境,线上调试,以及map控制时间戳,就能很好的管理所有模块了
ps:关于seajs的默认base,还有这种情况在:
构建输出目录在sea-modules/_output下
访问backbobe-test.html查看最终效果
个人建议将工程代码在webstorm(@7.0+)中打开,webstorm会自动启动一个web服务,或者其他能够启动web服务的方式.
以seajs-backbone作为根目录
ps:工程中的sea.js,我已经把text,log,debug,style四个插件手动合并进去了
B.业务模块部署在项目中,其他模块包括seajs本身及其插件部署在静态资源服务器见附件,构建时,只需将idleading做适当转换即可,总之要保证require或use时的路径和id一致
构建输出目录在sea-modules/_output2下
访问backbobe-test-outer.html查看最终效果
这种情况下需要启动两个web服务,一个webstorm的,一个静态资源服务器的,个人建议使用nodejs的anywhere启动.
B1.公用模块外部部署,开发阶段:
B2.公用模块外部部署,构建好后:
B3.公用模块外部部署,构建好后调试:
代码下载地址:
https://github.com/stoneChen/seajs-backbone-test/tree/master
欢迎大家指出不正确或不合理的地方~
sudo npm install spm
npm http GET http://registry.npmjs.org/spm
npm http 304 http://registry.npmjs.org/spm
[email protected] preinstall /Users/looping/work/www/node_modules/spm
node scripts/preinstall.js
NO SUDO PLEASE!!!
Maybe you need run:
$ sudo chown -R $USER /usr/local
More information on http://howtonode.org/introduction-to-npm
npm ERR! [email protected] preinstall: node scripts/preinstall.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the spm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node scripts/preinstall.js
npm ERR! You can get their info via:
npm ERR! npm owner ls spm
npm ERR! There is likely additional logging output above.
npm ERR! System Darwin 13.0.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "spm"
比如组件a有:
a.js
a.css
a_zh-cn.js
a_en.js
我该如何build一个cmd模块?
对于使用者来说,我希望是在seajs中配置变量locale,然后require('a')搞定。
I'm posting this issue to let you know that we will be publishing Grunt 0.4 on Monday, February 18th.
If your plugin is not already Grunt 0.4 compatible, would you please consider updating it? For an overview of what's changed, please see our migration guide.
If you'd like to develop against the final version of Grunt before Monday, please specify "grunt": "0.4.0rc8"
as a devDependency in your project. After Monday's release, you'll be able to use "grunt": "~0.4.0"
to actually publish your plugin. If you depend on any plugins from the grunt-contrib series, please see our list of release candidates for compatible versions. All of these will be updated to final status when Grunt 0.4 is published.
Also, in an effort to reduce duplication of effort and fragmentation in the developer community, could you review the grunt-contrib series of plugins to see if any of your functionality overlaps significantly with them? Grunt-contrib is community maintained with 40+ contributors—we'd love to discuss any additions you'd like to make.
Finally, we're working on a new task format that doesn't depend on Grunt: it's called node-task. Once this is complete, there will be one more conversion, and then we'll never ask you to upgrade your plugins to support our changes again. Until that happens, thanks for bearing with us!
If you have any questions about how to proceed, please respond here, or join us in #grunt on irc.freenode.net.
Thanks, we really appreciate your work!
E:\spm\js>spm build
C:\nodejs\node_modules\spm-build\index.js:24
throw new Error('spm is required in package.json');
^
Error: spm is required in package.json
at module.exports (C:\nodejs\node_modules\spm-build\index.js:24:11)
at Object. (C:\nodejs\node_modules\spm-build\bin\spm-build:50:1
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
spm build安装成功,就是一直执行不了,不知道为什么
目前似乎只支持alias
show friendly error message:
a.js
define(function() {
require('./b.js');
})
打包后
define('family/name/version/a', [... 'family/name/version/b.js']function() {
require('family/name/version/b');
})
虽然没问题,但是命名不一致
项目使用 less 预编译器,有一个 a.less
package.json 的 output 配置
"output": ["a.css"]
但是在 output 检测时找不到 a.css 导致 output 为空
假设下列的源文件目录结构,main.js
文件为输出文件,依赖 util.js
和 helper.js
。
src
main.js
util.js
helper.js
目前打包出来的 dist/main.js
是下面这个样子的。
define('main', ['./helper', './util'], function() {
var helper = require('./helper');
var util = require('./util');
// main code
});
define('helper', [], function() {
// helper code
});
define('util', [], function() {
// util code
});
这样的打包方式会产生三个 define 模块,其中的两个为内部模块不会被外部调用。 由于这样的打包方式,如果编码时随意拆分模块,最终页面上的 define 块的数量会特别多,给 SeaJS
的依赖链性能带来很大的压力。
实际上,在上面这个例子中,只需要暴露 main 这个主模块,其他的子模块都可以内嵌到 main 的 define 中去,比如:
define('main', ['./helper', './util'], function() {
var helper = (function() {
// helper code
return helper;
})();
var util = (function() {
// util code
return util;
})();
// main code
});
这样一个 output
文件只会有一个 define 模块,可以大大降低模块依赖的绝对数量,从而提升页面整体 性能。
而开发者依然可以随意拆分模块内部的文件,来提供模块的可维护性。
如何修改spm build src目录名称?
在config.js中配置transport的时候
files: [{
cwd: '.build/tmp',
src: '*/.css',
filter: 'isFile',
dest: '.build/src'
}]
在grunt中有个expand配置, 如果expand设置为true的话, 那么代这些设置有效, 但是在源码中并没有设置expand为true, 请问为什么? 如果是本身不需要将这些设置生效,那么为什么还要设置这些?
RT,异步依赖不提取可以理解,但异步的别名为什么不替换呢,导致打包好后,还要把这个别名配置放到seajs.config里
var init = require('grunt-spm-build')
console.log(init)
init(grunt, {pkg: 'package.json'})
init是一个对象吧?
EACCES, permission denied '/root/.spm/plugins.json'
you need install spm to register the program
$ npm install spm -g
if you have installed spm, it maybe you haven't set a NODE_PATH environment variable
具体的 log 贴在 SegmentFault 了
➤➤ node -v
v0.10.12
➤➤ npm -v
1.2.32
有点难理解这个错误信息:
npm ERR! Error: No compatible version found: underscore.string@'>=2.2.0rc <2.3.0-'
npm ERR! Valid install targets:
npm ERR! ["0.9.2","1.0.0","1.1.3","1.1.4","1.1.5","1.1.6","2.0.0","2.1.0","2.1.1","2.3.0","2.3.1","2.2.0-rc"]
在windows7环境下会自动下载 arale/class
最后的class模块的路径是:e:\simple\sea-modules\arale\class\1.0.0
也就是说 dist和 sea-modules 同在simple下面,感觉怪怪的。
其实我已经有这个class模块了,在 e:\sea-modules\arale\class\1.0.0
请问
1 这个自动下载有什么用?
2 是否可以设置不下载?或者下载到指定路径,如 e:\sea-modules\
请问 是否可以写个 spm-build 参数文档说明例子?
如:spm build -O ./sea-modules
warn: { [Error: ENOENT, no such file or directory 'dist'] errno: 34, code: 'ENOENT', path: 'dist', syscall: 'readdir' }
希望及时提醒。
C:\Users\admin>npm install spm-build -g -f
npm WARN using --force I sure hope you know what you are doing.
npm http GET https://registry.npmjs.org/spm-build
npm http 304 https://registry.npmjs.org/spm-build
npm http GET https://registry.npmjs.org/spm-build/-/spm-build-0.3.12.tgz
npm http 200 https://registry.npmjs.org/spm-build/-/spm-build-0.3.12.tgz
npm http GET https://registry.npmjs.org/spmrc
npm http GET https://registry.npmjs.org/grunt-contrib-cssmin
npm http GET https://registry.npmjs.org/grunt-cmd-concat
npm http GET https://registry.npmjs.org/grunt-contrib-copy
npm http GET https://registry.npmjs.org/grunt-contrib-clean
npm http GET https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/grunt-contrib-uglify
npm http GET https://registry.npmjs.org/grunt-cmd-transport
npm http GET https://registry.npmjs.org/spm-grunt
npm http 304 https://registry.npmjs.org/spmrc
npm http GET https://registry.npmjs.org/spmrc/-/spmrc-0.1.3.tgz
npm http 304 https://registry.npmjs.org/grunt-contrib-cssmin
npm http GET https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-css
min-0.6.2.tgz
npm http 304 https://registry.npmjs.org/grunt-contrib-copy
npm http GET https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-
0.4.1.tgz
npm http 304 https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/grunt-contrib-uglify
npm http GET https://registry.npmjs.org/commander/-/commander-1.1.1.tgz
npm http GET https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-ugl
ify-0.2.7.tgz
npm http 304 https://registry.npmjs.org/grunt-cmd-transport
npm http GET https://registry.npmjs.org/grunt-cmd-transport/-/grunt-cmd-transpor
t-0.3.0.tgz
npm http 304 https://registry.npmjs.org/grunt-cmd-concat
npm http GET https://registry.npmjs.org/grunt-cmd-concat/-/grunt-cmd-concat-0.2.
7.tgz
npm http 304 https://registry.npmjs.org/spm-grunt
npm http GET https://registry.npmjs.org/spm-grunt/-/spm-grunt-0.1.7.tgz
npm http 200 https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-css
min-0.6.2.tgz
npm http 200 https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-
0.4.1.tgz
npm http 200 https://registry.npmjs.org/commander/-/commander-1.1.1.tgz
npm http 200 https://registry.npmjs.org/grunt-cmd-transport/-/grunt-cmd-transpor
t-0.3.0.tgz
npm http 200 https://registry.npmjs.org/grunt-cmd-concat/-/grunt-cmd-concat-0.2.
7.tgz
npm http 200 https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-ugl
ify-0.2.7.tgz
npm http 200 https://registry.npmjs.org/spm-grunt/-/spm-grunt-0.1.7.tgz
npm http 200 https://registry.npmjs.org/spmrc/-/spmrc-0.1.3.tgz
npm http 304 https://registry.npmjs.org/grunt-contrib-clean
npm http GET https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clea
n-0.5.0.tgz
npm http 200 https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clea
n-0.5.0.tgz
npm http GET https://registry.npmjs.org/grunt
npm http GET https://registry.npmjs.org/keypress
npm http GET https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/cmd-util
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/handlebars/1.0.11
npm http GET https://registry.npmjs.org/css
npm http GET https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/grunt-lib-contrib
npm http GET https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/cmd-util
npm http GET https://registry.npmjs.org/grunt
npm http GET https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/grunt-lib-contrib
npm http 304 https://registry.npmjs.org/grunt
npm http GET https://registry.npmjs.org/grunt/-/grunt-0.4.2.tgz
npm http 304 https://registry.npmjs.org/cmd-util
npm http 304 https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/cmd-util/-/cmd-util-0.3.12.tgz
npm http GET https://registry.npmjs.org/rimraf/-/rimraf-2.2.5.tgz
npm http 304 https://registry.npmjs.org/handlebars/1.0.11
npm http GET https://registry.npmjs.org/handlebars/-/handlebars-1.0.11.tgz
npm http 304 https://registry.npmjs.org/css
npm http 304 https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/css/-/css-1.4.4.tgz
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz
npm http 304 https://registry.npmjs.org/cmd-util
npm http 304 https://registry.npmjs.org/grunt-lib-contrib
npm http GET https://registry.npmjs.org/grunt-lib-contrib/-/grunt-lib-contrib-0.
6.1.tgz
npm http 304 https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/clean-css/-/clean-css-1.1.7.tgz
npm http 304 https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/keypress
npm http GET https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz
npm http 304 https://registry.npmjs.org/uglify-js
npm http 304 https://registry.npmjs.org/grunt-lib-contrib
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.8.tgz
npm http 200 https://registry.npmjs.org/css/-/css-1.4.4.tgz
npm http 200 https://registry.npmjs.org/rimraf/-/rimraf-2.2.5.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz
npm http 200 https://registry.npmjs.org/grunt-lib-contrib/-/grunt-lib-contrib-0.
6.1.tgz
npm http 200 https://registry.npmjs.org/handlebars/-/handlebars-1.0.11.tgz
npm http 200 https://registry.npmjs.org/cmd-util/-/cmd-util-0.3.12.tgz
npm http 200 https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz
npm http 200 https://registry.npmjs.org/clean-css/-/clean-css-1.1.7.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.8.tgz
npm http GET https://registry.npmjs.org/zlib-browserify/0.0.1
npm http GET https://registry.npmjs.org/commander/-/commander-2.0.0.tgz
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/uglify-to-browserify
npm http 304 https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/clean-css/-/clean-css-1.0.12.tgz
npm http 200 https://registry.npmjs.org/grunt/-/grunt-0.4.2.tgz
npm http 200 https://registry.npmjs.org/commander/-/commander-2.0.0.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz
npm http 304 https://registry.npmjs.org/uglify-to-browserify
npm http GET https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browser
ify-1.0.1.tgz
npm http 304 https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz
npm http 304 https://registry.npmjs.org/zlib-browserify/0.0.1
npm http GET https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.1.
tgz
npm http 304 https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http 200 https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.1.
tgz
npm http 200 https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browser
ify-1.0.1.tgz
npm http 200 https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz
npm http 200 https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http 200 https://registry.npmjs.org/clean-css/-/clean-css-1.0.12.tgz
npm http 200 https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz
npm http GET https://registry.npmjs.org/css-parse/1.6.0
npm http GET https://registry.npmjs.org/css-stringify/1.3.2
npm http GET https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/hooker
npm http GET https://registry.npmjs.org/eventemitter2
npm http GET https://registry.npmjs.org/colors
npm http GET https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/dateformat/1.0.2-1.2.3
npm http GET https://registry.npmjs.org/findup-sync
npm http GET https://registry.npmjs.org/iconv-lite
npm http GET https://registry.npmjs.org/which
npm http GET https://registry.npmjs.org/underscore.string
npm http GET https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/js-yaml
npm http GET https://registry.npmjs.org/getobject
npm http GET https://registry.npmjs.org/exit
npm http GET https://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz
npm http GET https://registry.npmjs.org/async/-/async-0.1.22.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz
npm http 304 https://registry.npmjs.org/css-parse/1.6.0
npm http GET https://registry.npmjs.org/css-parse/-/css-parse-1.6.0.tgz
npm http 304 https://registry.npmjs.org/css-stringify/1.3.2
npm http GET https://registry.npmjs.org/css-stringify/-/css-stringify-1.3.2.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz
npm http 304 https://registry.npmjs.org/eventemitter2
npm http GET https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.13.tgz
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/colors
npm http GET https://registry.npmjs.org/colors/-/colors-0.6.2.tgz
npm http 304 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/css-stringify/-/css-stringify-1.3.2.tgz
npm http 304 https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/commander/-/commander-1.3.2.tgz
npm http 304 https://registry.npmjs.org/hooker
npm http 304 https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz
npm http GET https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz
npm http 200 https://registry.npmjs.org/css-parse/-/css-parse-1.6.0.tgz
npm http 304 https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz
npm http 304 https://registry.npmjs.org/dateformat/1.0.2-1.2.3
npm http GET https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz
npm http GET https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz
npm http GET https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http GET https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz
npm http 200 https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.13.tgz
npm http 304 https://registry.npmjs.org/which
npm http GET https://registry.npmjs.org/which/-/which-1.0.5.tgz
npm http 304 https://registry.npmjs.org/findup-sync
npm http GET https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.2.tgz
npm http 304 https://registry.npmjs.org/underscore.string
npm http 200 https://registry.npmjs.org/colors/-/colors-0.6.2.tgz
npm http GET https://registry.npmjs.org/underscore.string/-/underscore.string-2.
2.1.tgz
npm http 304 https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz
npm http 304 https://registry.npmjs.org/glob
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/glob/-/glob-3.1.21.tgz
npm http 304 https://registry.npmjs.org/js-yaml
npm http GET https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz
npm http 200 https://registry.npmjs.org/commander/-/commander-1.3.2.tgz
npm http GET https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz
npm http 304 https://registry.npmjs.org/iconv-lite
npm http GET https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz
npm http 304 https://registry.npmjs.org/exit
npm http GET https://registry.npmjs.org/exit/-/exit-0.1.2.tgz
npm http 304 https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz
npm http 200 https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz
npm http 304 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz
npm http 200 https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz
npm http 304 https://registry.npmjs.org/getobject
npm http 200 https://registry.npmjs.org/async/-/async-0.1.22.tgz
npm http GET https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz
npm http 200 https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz
npm http 200 https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz
npm http 200 https://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz
npm http 200 https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz
npm http 200 https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http 200 https://registry.npmjs.org/which/-/which-1.0.5.tgz
npm http 200 https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz
npm http 200 https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.2.tgz
npm http 200 https://registry.npmjs.org/underscore.string/-/underscore.string-2.
2.1.tgz
npm http 200 https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz
npm http 200 https://registry.npmjs.org/glob/-/glob-3.1.21.tgz
npm http 200 https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz
npm http 200 https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz
npm http 200 https://registry.npmjs.org/exit/-/exit-0.1.2.tgz
npm http 200 https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz
npm http 200 https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz
npm http 200 https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/argparse
npm http GET https://registry.npmjs.org/esprima
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz
npm http GET https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz
npm http 304 https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/lodash/-/lodash-1.0.1.tgz
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz
npm http GET https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz
npm http 304 https://registry.npmjs.org/esprima
npm http GET https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz
npm http 200 https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz
npm http 304 https://registry.npmjs.org/argparse
npm http GET https://registry.npmjs.org/argparse/-/argparse-0.1.15.tgz
npm http 200 https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz
npm http 200 https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz
npm http 200 https://registry.npmjs.org/argparse/-/argparse-0.1.15.tgz
npm http 304 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/underscore.string
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
npm http 200 https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/underscore.string
npm http GET https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz
npm http GET https://registry.npmjs.org/underscore.string/-/underscore.string-2.
3.3.tgz
npm http 200 https://registry.npmjs.org/underscore.string/-/underscore.string-2.
3.3.tgz
npm http 200 https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz
npm http 200 https://registry.npmjs.org/lodash/-/lodash-1.0.1.tgz
npm http 200 https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz
npm http 304 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz
npm http 200 https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz
C:\Users\admin\AppData\Roaming\npm\spm-build -> C:\Users\admin\AppData\Roaming\n
pm\node_modules\spm-build\bin\spm-build
[email protected] postinstall C:\Users\admin\AppData\Roaming\npm\node_modules\s
pm-build
node scripts/postinstall.js
我在spm-build的config.js中看到这样代码,感觉应该可以设置,但是不知道怎么传入这个options
['paths', 'idleading', 'debug', 'handlebars', 'uglify'].forEach(function(key) {
if (options.hasOwnProperty(key)) {
spmConfig.options[key] = options[key];
cssConfig.options[key] = options[key];
}
});
在index.js中也看到这样的代码
exports = module.exports = function(options) {
process.on('log.warn', function(msg) {
grunt.log.warn('warn ' + msg);
});
process.on('log.info', function(msg) {
grunt.log.writeln('info ' + msg);
});
_cache = options;
options = parseOptions(options);
Gruntfile:
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
copy: {
main: {
files: [
{ expand: true, cwd: 'dist/', src: ['**'], dest: 'sea-modules/<%= pkg.family %>/<%= pkg.name %>/<%= pkg.version %>', filter: 'isFile' }, // includes files in path
]
}
},
apidoc: {
app: {
src: "lib/",
dest: "apidoc/",
options: {
debug: true,
includeFilters: [".*\\.js$"],
excludeFilters: ["node_modules/","sea-modules/"]
}
}
}
})
var init = require('grunt-spm-build').initConfig;
init(grunt, { pkg: "package.json" });
grunt.loadNpmTasks("grunt-spm-build")
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-apidoc');
grunt.registerTask('deploy', ["spm-build", "copy", "apidoc:app"]);
我希望使用grunt-spm-build之后,用copy task将build结果move到sea-modules相关目录下,程序报错,显示copy有冲突.尝试发现copy配置,好像不支持形如apidoc:app的target方式,
npm http GET https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/amdefine
/usr/local/bin/spm-build -> /usr/local/lib/node_modules/spm-build/bin/spm-build
[email protected] postinstall /usr/local/lib/node_modules/spm-build
node scripts/postinstall.js
EACCES, permission denied '/root/.spm'
you need install spm to register the program
$ npm install spm -g
if you have installed spm, it maybe you haven't set a NODE_PATH environment variable
[email protected] /usr/local/lib/node_modules/spm-build
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
spm-build可以自定义吗?
比如说:
在0.3.13中可以output可以out:["images/"]或者[""] 都可以构建到src/下的images目录 在0.3.17中移除了这样的设定么?
Create a Gruntfile.js
example for spmjs/spm2#3
https://github.com/spmjs/spm-build/blob/master/index.js#L38
目前 .build/dist/
目录并不会到达 dist 目录的最终状态,还有一些压缩和选取输出文件的过程放在了拷贝文件的过程中。
同时需要修改的还有 https://github.com/spmjs/spm-alipay-suite/blob/master/Gruntfile.js#L73
希望在目录 .build/dist/
中能够完成所有的操作,最后只需要拷贝 .build/dist
目录为 dist
目录即可。
如题,这个原来解决jquery插件问题的方法,现在不提倡了是吗?现在依赖解析不出来,要手拆一下。
var fun = require(<jquery-plugin>)
fun($)
打包a.js的时候会提取依赖的b.js,但是不会提取b.js依赖的c.js
使用combo的时候,还是会变成两个请求a.js,b.js再加c.js
1.先到官网下 nodejs 64位 安装程序,点击进行默认安装(我的电脑是win7 64位的)然后设置了path 和 NODE_PATH
2.在控制台下查看到自己的 node -v 是 v0.10.21, npm -v 是 1.3.11
3.执行npm install spm -g 之后,查看版本
C:>spm -v
Options:
-h, --help output usage information
-V, --version output the version number
System Commands:
plugin plugin system for spm
config configuration for spm
help show help information
Package Commands:
tree show dependencies tree
info information of a module
login login your account
search search modules
install install a module
publish publish a module
unpublish unpublish a module
Error: ENOENT, no such file or directory 'C:\Users\Administrator.spm\autoupdate'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.writeFileSync (fs.js:966:15)
at Request._callback (C:\Users\Administrator\AppData\Roaming\npm\node_modules\spm\lib\utils\check-update.js:43:8)
at Request.self.callback (C:\Users\Administrator\AppData\Roaming\npm\node_modules\spm\node_modules\request\index.js:148
:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request. (C:\Users\Administrator\AppData\Roaming\npm\node_modules\spm\node_modules\request\index.js:891:1
4)
at Request.EventEmitter.emit (events.js:117:20)
at IncomingMessage. (C:\Users\Administrator\AppData\Roaming\npm\node_modules\spm\node_modules\request\index.
js:842:12)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
就出现了这样的情况 只要 是对 spm 的命令行操作都会出现如上3的输出,慌了,不知道该这样做了,有没有同我一样遭遇的亲,求解答
compile tpl to js.
https://github.com/spmjs/grunt-spm-build/blob/master/index.js#L180
180行 这一步对有通配符 *.js
的解析处理忽略了jsmin? 为什么对有通配符的文件只做复制而没有压缩操作??这个功能是正在开发中,还是我的理解有误?求解?
我在js文件里有 var tpl = require('./templates/a.tpl')
在执行spm build的时候不能也将这个tpl文件合并进来,提示a.tpl.js找不到
我记得以前貌似可以的……
spm build 如何设置合并代码
如果 output 为
"output": {
"knight.js": "knight.js",
"zeroclipboard.swf": "biz/zeroclipboard.swf",
"zeroclipboard10.swf": "biz/zeroclipboard10.swf"
}
spm build 不报错也不执行,看起来是解析错误
步骤:
1 安装npm:
1.1 在nodejs官网上下载node-v0.10.12-x64.msi
1.2 以win7管理员身份运行node-v0.10.12-x64.msi
1.3 安装路径设定为:D:\Program Files\nodejs
2 安装spm:
2.1 以管理员身份运行win7命令提示符
2.2 命令行输入npm -v,显示:1.2.32
2.3 命令行输入npm install spm -g
2.4 输出log如下:
npm http GET https://registry.npmjs.org/spm
npm http 304 https://registry.npmjs.org/spm
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/win-spawn
npm http GET https://registry.npmjs.org/fstream-ignore
npm http GET https://registry.npmjs.org/spmrc
npm http GET https://registry.npmjs.org/fstream
npm http GET https://registry.npmjs.org/semver
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/colorful
npm http GET https://registry.npmjs.org/tar
npm http GET https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/cmd-util
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/archy
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/lodash
npm http 304 https://registry.npmjs.org/fstream
npm http 304 https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/win-spawn
npm http 304 https://registry.npmjs.org/spmrc
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/fstream-ignore
npm http 304 https://registry.npmjs.org/semver
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/colorful
npm http 304 https://registry.npmjs.org/tar
npm http 304 https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/cmd-util
npm http 304 https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/archy
npm http 304 https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/keypress
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/block-stream
npm http GET https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/aws-sign
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/cookie-jar
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http GET https://registry.npmjs.org/hawk
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/combined-stream
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/keypress
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/block-stream
npm http 304 https://registry.npmjs.org/uglify-js
npm http 304 https://registry.npmjs.org/forever-agent
npm WARN package.json [email protected] No readme data.
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/aws-sign
npm WARN package.json [email protected] No readme data.
npm http 304 https://registry.npmjs.org/node-uuid
npm http 304 https://registry.npmjs.org/oauth-sign
npm WARN package.json [email protected] No readme data.
npm http 304 https://registry.npmjs.org/cookie-jar
npm WARN package.json [email protected] No readme data.
npm http 304 https://registry.npmjs.org/tunnel-agent
npm WARN package.json [email protected] No readme data.
npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/hawk
npm http 304 https://registry.npmjs.org/lru-cache
npm WARN engine [email protected]: wanted: {"node":"0.8.x"} (current: {"node":"v0.10.1
2","npm":"1.2.32"})
npm http 304 https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/cryptiles
npm http GET https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/hoek
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
npm http GET https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/hoek
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/cryptiles
npm WARN engine [email protected]: wanted: {"node":"0.8.x"} (current: {"node":"v0.10.12
","npm":"1.2.32"})
npm WARN engine [email protected]: wanted: {"node":"0.8.x"} (current: {"node":"v0.10.12
","npm":"1.2.32"})
npm WARN engine [email protected]: wanted: {"node":"0.8.x"} (current: {"node":"v0.10.12
","npm":"1.2.32"})
npm WARN engine [email protected]: wanted: {"node":"0.8.x"} (current: {"node":"v0.
10.12","npm":"1.2.32"})
npm http 304 https://registry.npmjs.org/wordwrap
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
2.5 命令行输入spm -V,显示:2.1.6
3 安装spm-build
3.1 命令行输入npm install spm-build
3.2 输出log如下:
npm http GET https://registry.npmjs.org/spm-build
npm http 304 https://registry.npmjs.org/spm-build
npm http GET https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/grunt-cmd-transport
npm http GET https://registry.npmjs.org/grunt-cmd-concat
npm http GET https://registry.npmjs.org/grunt-contrib-copy
npm http GET https://registry.npmjs.org/grunt-contrib-uglify
npm http GET https://registry.npmjs.org/grunt-contrib-clean
npm http GET https://registry.npmjs.org/spmrc
npm http GET https://registry.npmjs.org/grunt-contrib-cssmin
npm http GET https://registry.npmjs.org/spm-grunt
npm http 304 https://registry.npmjs.org/grunt-cmd-transport
npm http 304 https://registry.npmjs.org/grunt-cmd-concat
npm http 304 https://registry.npmjs.org/grunt-contrib-uglify
npm http 304 https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/grunt-contrib-copy
npm http 304 https://registry.npmjs.org/grunt-contrib-clean
npm http 304 https://registry.npmjs.org/spmrc
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/grunt-contrib-cssmin
npm http 304 https://registry.npmjs.org/spm-grunt
npm http GET https://registry.npmjs.org/grunt
npm http GET https://registry.npmjs.org/keypress
npm http GET https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/cmd-util
npm http GET https://registry.npmjs.org/handlebars/1.0.11
npm http GET https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/css
npm http GET https://registry.npmjs.org/grunt
npm http GET https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/grunt-lib-contrib
npm http GET https://registry.npmjs.org/cmd-util
npm http GET https://registry.npmjs.org/uglify-js
npm http 304 https://registry.npmjs.org/keypress
npm http 304 https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/clean-css
npm http 304 https://registry.npmjs.org/cmd-util
npm http 304 https://registry.npmjs.org/handlebars/1.0.11
npm http 304 https://registry.npmjs.org/uglify-js
npm http 304 https://registry.npmjs.org/css
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/clean-css
npm http 304 https://registry.npmjs.org/grunt-lib-contrib
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/css-parse/1.5.0
npm http GET https://registry.npmjs.org/css-stringify/1.3.1
npm http GET https://registry.npmjs.org/colors
npm http GET https://registry.npmjs.org/dateformat/1.0.2-1.2.3
npm http GET https://registry.npmjs.org/eventemitter2
npm http GET https://registry.npmjs.org/findup-sync
npm http GET https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/hooker
npm http GET https://registry.npmjs.org/iconv-lite
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/underscore.string
npm http GET https://registry.npmjs.org/which
npm http GET https://registry.npmjs.org/js-yaml
npm http GET https://registry.npmjs.org/lodash
npm http 304 https://registry.npmjs.org/cmd-util
npm http 304 https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/zlib-browserify/0.0.1
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/colors
npm http 304 https://registry.npmjs.org/dateformat/1.0.2-1.2.3
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/eventemitter2
npm http 304 https://registry.npmjs.org/findup-sync
npm http 304 https://registry.npmjs.org/glob
npm http 304 https://registry.npmjs.org/hooker
npm http 304 https://registry.npmjs.org/iconv-lite
npm http 304 https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/nopt
npm http 304 https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/underscore.string
npm http 304 https://registry.npmjs.org/which
npm http 304 https://registry.npmjs.org/css-stringify/1.3.1
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/js-yaml
npm http 304 https://registry.npmjs.org/css-parse/1.5.0
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/lodash
npm http 304 https://registry.npmjs.org/zlib-browserify/0.0.1
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/esprima
npm http GET https://registry.npmjs.org/argparse
npm http GET https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/abbrev
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/esprima
npm http 304 https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/argparse
npm http GET https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/underscore
[email protected] postinstall C:\Users\itoware.ITOWARE-WANGDON\node_modules\spm-
build
node scripts/postinstall.js
[email protected] node_modules\spm-build
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected]
, [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], hooker@
0.2.3, [email protected], [email protected], [email protected], underscore.strin
[email protected], [email protected], [email protected], [email protected], [email protected], rimr
[email protected], [email protected], [email protected], [email protected])
└── [email protected]
3.3 命令行输入spm build,提示:
build
is not a part of spm now. You can install it:
$ npm install spm-build -g
publish: gallery/[email protected]
tarfile: marionette-0.9.2.tar.gz
yuan: Permission denied.
Task: "spm-newline" task
warn: { [Error: ENOENT, no such file or directory 'dist'] errno: 34, code: 'ENOENT', path: 'dist', syscall: 'readdir' }
Done: but with warnings.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.