DEMO
以 anima-widget 为例。
迁移步骤
安装 spm3
$ npm install spm -g |
修改 package.json
合并 family 到 name,例如:
- "name": "widget",
- "family": "anima"
+ "name": "anima-widget"spm@3.x 中不再有 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 的格式为
"": ""
- "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/ ,确保文档和演示都能正确显示。
修改 tests 目录里的用例文件
去 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 文件,参考这个。
spm 发布
# 发布 |