【问题标题】:What does "browserify": { "transform": [ "browserify-shim" ] } mean?"browserify": { "transform": [ "browserify-shim" ] } 是什么意思?
【发布时间】:2015-05-10 07:05:01
【问题描述】:

我知道 browserify 是什么以及 browserify-shim 是干什么用的。但我不明白语法。

我已经在package.json中指定了下面一个

"browserify-shim": {
    "jquery": "$"
  }

--意思是说,将jQuery转换成一个需要的模块。那么 "transform": ["browserify-shim"] 这里有什么目的呢?

无法从文档中弄清楚。谁能帮我理解一下?

编辑

如果我的问题不清楚,

“browserify”: { “transform”: [ “browserify-shim” ] } 

这段代码的 sn-p 是什么意思?变换有什么作用?

【问题讨论】:

    标签: jquery npm gulp browserify


    【解决方案1】:

    编辑:

    Transforms 是添加到 browserify 以修改 browserify 进程的进程。列出了其他一些流行的转换here

    原始(错误)回复:

    您正在做的是从 NPM(或 package.json 的浏览器部分中的别名)获取 jquery 包,并将变量 $ 暴露给整个 browserify 包。

    如果我想

    npm install moment --save
    

    然后在 browserify-shim 中添加以下内容:

    "moment": "moment"
    

    我也会将 moment.js 暴露给整个包。

    要记住的是,jQuery 是一个格式正确的,所以你也可以把它放在你的主应用程序中,而不是使用 browserify-shim:

      var $ = window.jQuery = require("jquery");
    

    【讨论】:

    • 感谢您的回复。但也许我的问题还不够清楚。请看编辑。我想知道的是,“转换”命令有什么作用?我知道 browserify-shim 是如何工作的。
    【解决方案2】:

    当您的 package.json 中有“transform”时,表示将自动应用此转换。

    所以你的例子相当于运行browserify -t browserify-shim

    如果你有

    "transform": [
      "a",
      "b",
      "c"
    ]
    

    并运行browserify mycode.js > bundle.js,将应用转换abc

    使用“转换”字段还意味着您可以在 npm 上分发包含转换作为依赖项的包。当其他人想要将您的包包含在他们的 browserify 包中时,将应用正确的转换。

    这里有用的文档:https://github.com/substack/browserify-handbook#browserifytransform-field

    【讨论】: