将节点模块包含为要注入的文件

时间:2016-01-23 16:45:13

标签: sails.js

我希望在Sails v0.11中将/node_modules/es6-shim/es6-shim.min.js包含在客户端。

我已经尝试将其包含在管道中:

var jsFilesToInject = [

 // Load sails.io before everything else
 'js/dependencies/sails.io.js',

 /* INCLUDE NODE MODULE */
 '/node_modules/es6-shim/es6-shim.min.js',

 // Dependencies like jQuery, or Angular are brought in here
 'js/dependencies/**/*.js',

 // All of the rest of your client-side js files
 // will be injected here in no particular order.
 'js/**/*.js',

 // Use the "exclude" operator to ignore files
 // '!js/ignore/these/files/*.js'
];

这可能吗?我真的不想使用凉亭或CDN,我想通过npm安装/更新依赖。

1 个答案:

答案 0 :(得分:2)

实现此目的的最简单方法是单独保留pipeline.js文件,只需在assets/js内部指向您想要的文件的符号链接,例如:

ln -s ../../node_modules/es6-shim/es6-shim.min.js assets/js/es6-shim.min.js

下次运行sails lift时,Grunt会在assets/js文件夹中看到新的Javascript文件,并与其他文件一起处理。

如果由于某种原因这不是一个选项,您需要在tasks/copy.js Grunt任务中添加新的子任务:

    dev_es6: {
        files: [{
            expand: true,
            src: ['./node_modules/es6-shim/es6-shim.min.js'],
            dest: '.tmp/public/js'
        }]
    }

然后将其添加到compileAssets中的tasks/register/compileAssets任务:

module.exports = function (grunt) {
    grunt.registerTask('compileAssets', [
        'clean:dev',
        'jst:dev',
        'less:dev',
        'copy:dev',
        'copy:dev_es6', // <-- adding our new subtask
        'coffee:dev'
    ]);
};