Skip to content
This repository has been archived by the owner on Aug 15, 2018. It is now read-only.

迁移 spm2 的模块到 spm3

afc163 edited this page Nov 25, 2014 · 1 revision

DEMO

anima-widget 为例。

迁移步骤

安装 spm3

$ npm install spm -g

修改 package.json

  1. 合并 family 到 name,例如:

    - "name": "widget",
    - "family": "anima"
    + "name": "anima-widget"

    [email protected] 中不再有 family,和 npm 一样我们使用唯一的 name 占坑的方式组织模块。

    以上是 Arale 等模块的迁移逻辑,形式统一且避免冲突。如果没有被占用,你当然可以直接使用原来的 name 。

  2. 修改 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");

  3. 修改 spm.alias 为 spm.dependencies,注意 dependencies 的格式为 "{{name}}": "{{version}}"

    - "alias": { "base": "anima/base/1.1.0/base" }
    + "dependencies": { "anima-base": "1.1.0" }
  4. 如果原来有使用 jQuery,修正原来 require('$') 的写法为 require('jquery'),并在依赖中指明 jquery 版本号,建议为 1.7.2 。

     "dependencies": { 
    +  "jquery": "1.7.2"
     }

修改源文件,通常只要做两点修改

  1. 去 define 封装,采用 CommonJS 的书写规范。

    - define(function(require, module, exports) {
      ...
    - });
  2. 如果有依赖其他 package,注意下依赖的 package 是否有修改 name,比如:

    - var base = require('base');
    + var base = require('anima-base');
  3. spm install 安装依赖,然后运行 spm doc watch 并打开 http://127.0.0.1:8000/ ,确保文档和演示都能正确显示。

修改 tests 目录里的用例文件

  1. 去 define 封装

    - define(function(require, module, exports) {
      ...
    - });
  2. 修改 require 的绝对地址为相对地址。

  3. 添加 expect 依赖到 devDependencies 中。

      "spm": {
        "devDependencies": {
    +     "expect.js": "0.3.1"
        }
      }
  4. 运行 spm test 确保用例测试通过。

  5. 运行 spm doc watch 并打开 http://127.0.0.1:8000/tests/runner.html ,确保用例跑过。

删除和忽略部分目录

  1. 删除 dist 目录,构建后的文件不再存在源码中

  2. 增加 .spmignore 文件,参考这个

登陆 spm 并发布

# 需在 http://spmjs.io/ 登陆,取得 token
$ spm login

# 发布
$ spm publish

参考链接