-
Notifications
You must be signed in to change notification settings - Fork 180
迁移 spm2 的模块到 spm3
以 anima-widget 为例。
$ npm install spm -g
-
合并 family 到 name,例如:
- "name": "widget", - "family": "anima" + "name": "anima-widget"
[email protected] 中不再有 family,和 npm 一样我们使用唯一的 name 占坑的方式组织模块。
以上是 Arale 等模块的迁移逻辑,形式统一且避免冲突。如果没有被占用,你当然可以直接使用原来的 name 。
-
修改 spm.output 为 spm.main,注意 spm.main 需为字符串
- "output": ["src/widget.js"] + "main": "src/widget"
这里更推荐的做法是在根目录建立
index.js
,package.json 里设"main": "index.js"
,然后 index.js 里module.exports = require("./src/widget");
-
修改 spm.alias 为 spm.dependencies,注意 dependencies 的格式为
"{{name}}": "{{version}}"
- "alias": { "base": "anima/base/1.1.0/base" } + "dependencies": { "anima-base": "1.1.0" }
-
如果原来有使用 jQuery,修正原来 require('$') 的写法为 require('jquery'),并在依赖中指明 jquery 版本号,建议为 1.7.2 。
"dependencies": { + "jquery": "1.7.2" }
-
去 define 封装,采用 CommonJS 的书写规范。
- define(function(require, module, exports) { ... - });
-
如果有依赖其他 package,注意下依赖的 package 是否有修改 name,比如:
- var base = require('base'); + var base = require('anima-base');
-
spm install 安装依赖,然后运行 spm doc watch 并打开 http://127.0.0.1:8000/ ,确保文档和演示都能正确显示。
-
去 define 封装
- define(function(require, module, exports) { ... - });
-
修改 require 的绝对地址为相对地址。
-
添加 expect 依赖到 devDependencies 中。
"spm": { "devDependencies": { + "expect.js": "0.3.1" } }
-
运行 spm test 确保用例测试通过。
-
运行 spm doc watch 并打开 http://127.0.0.1:8000/tests/runner.html ,确保用例跑过。
-
删除 dist 目录,构建后的文件不再存在源码中
-
增加 .spmignore 文件,参考这个。
# 需在 http://spmjs.io/ 登陆,取得 token
$ spm login
# 发布
$ spm publish