【发布时间】:2017-08-08 20:16:56
【问题描述】:
我在 Visual Studio 2017 中构建了一个 Angular 应用程序。我正在使用 npm、gulp 和 browserify 来帮助我管理依赖项、捆绑和缩小。一切都进行得很顺利,直到我尝试引入时刻、时刻-时区和角时刻,当我开始无法让这些库正常运行时。
我假设问题与这些库包含在我的应用程序中的方式有关,因为我使用 npm、gulp、browserify 或 require('... ') 陈述。所以,解释一下我是如何做到的似乎对我有帮助。
首先,在 VS 中,我在项目中添加了一个节点配置文件 (package.json),其中包含将通过 npm 安装的所有依赖项的列表。因此,例如,我的 package.json 看起来像这样:
{
"property": value,
"otherProperty": otherValue,
"dependencies": {
"angular": "1.5.8",
"angular-ui-router": "1.0.3",
"jquery": "3.1.0",
"moment": "2.18.1",
"moment-timezone": "0.5.13",
"angular-moment": "1.0.1"
}
}
现在,这使得 npm 继续下载所有内容并将其粘贴到我的 node_modules 文件夹中,但它实际上并没有在我的应用程序中包含任何内容。于是就有了类似下面的 gulp 任务:
var dependencies = Object.keys(packageJson && packageJson.dependencies || {});
browserify({cache: {}, packageCache: {} }})
.require(dependencies)
.bundle()
.pipe(source(js/siteLibs.js))
.pipe(buffer())
.pipe(gulp.dest("."));
好的,如果 gulp 任务正常工作,我将有一个名为 siteLibs.js 的文件,其中包含我的 npm 依赖项中的所有 js,然后我可以只创建一个脚本标记来引用 siteLibs.js。
下一部分,我有点模糊,但我的应用程序中是否仍然需要有一个实际的 require('...') 语句,用于矩、角矩和矩时区?如果需要,为什么?它在做什么?
现在,一旦到了这一点,我应该能够继续让我的 Angular 应用程序依赖于矩、矩时区或角矩,而且,我确实可以。问题是当我调用moment.locales() 时,它应该返回所有已加载语言环境的列表,它只有“en-US”。好的,这是意料之中的,因为我从未加载任何语言环境。因此,如果我进入我的应用并说:
require('moment/locales/en-gb');
require('moment/locales/en-au');
require('moment/locales/fr-ca');
没有区别。唯一加载的语言环境是 en-US。鉴于我正在使用 npm、gulp 和 browserify,加载这些额外语言环境的正确方法是什么?
【问题讨论】:
标签: momentjs browserify angular-moment