Подтвердить что ты не робот

Как скопировать из node_modules только файлы, необходимые для распространения, используя grunt и grunt-contrib-copy

Хотя я где-то читал, что "основное" свойство package.json можно использовать для копирования только файлов, необходимых для "dist" или для развертывания. Я предполагал, что для него есть ворчащая задача, но я не вижу ничего, что могло бы помочь мне или проинструктировать меня. Теперь я копирую все под node_modules, но, конечно, мне не нужно распространять пример кода библиотеки.

Есть ли задача grunt или какие-либо инструкции по правильному использованию grunt-contrib-copy, чтобы просто скопировать файлы из зависимостей node_module, надеюсь, из стандартного объекта pkg объекта pkg (проанализированный файл package.json)?

4b9b3361

Ответ 1

package.json не содержит достаточной информации для вас, чтобы знать, что включать. Вам нужно будет разобрать все операторы require, но даже тогда есть случаи, которые вы не можете обнаружить, например, загружать ресурсы модуля и т.д.

Правильный способ сделать это - авторы пакетов игнорировать файлы, которые не нужны, с помощью .npmignore file или даже лучше используйте files свойство в package.json, чтобы явно определить, какие файлы должны быть включены в пакет.

К сожалению, большинство авторов пакетов ленивы и не беспокоятся об этом...

Я бы посоветовал вам открывать PR в соответствующих модулях с помощью свойства files.

Ответ 2

Вы можете:

1) Используйте задачу копирования для копирования каждого соответствующего файла в каталог dest:

copy:
  js:
    files: [
      { 
         expand: true, 
         cwd: 'node_modules/jquery', 
         src: 'jquery.min.js', 
         dest: 'www/js' 
      },
      { 
         expand: true, 
         cwd: 'node_modules/jquery-mobile-bower/js', 
         src: 'jquery.mobile-*.min.js', 
         dest: 'www/js' 
      }
    ]

jquery.min.js и jquery.mobile-x.y.z.min.js будут скопированы в каталог www/js.

2) Используйте concat-задачу для объединения всех файлов в один файл dest (полезно для создания уникальных файлов javascript/stylesheets)

concat:
  options:
    separator: ';'
  js:
    dest: 'www/js/lib.js'
    src: [
      'node_modules/jquery/jquery.min.js',
      'node_modules/jquery-mobile-bower/js/jquery.mobile-*.min.js'
    ]

jquery.min.js и jquery.mobile-x.y.z.min.js будут объединены в один файл www/js/lib.js, разделенный точкой с запятой.