1

特定のタイプのビルド中にファイルを条件付きでインポートする必要があります。grunt-contrib-jshint@0.7.0の上にあるものを使用するless@1.4.2

これまでに試したこと...

保護されたミックスインを使用して、必要なビルドのタイプを決定しようとしています。つまり、開発モードで壊れる特定の少ないファイルのインポートをスキップしようとしています。

@isProduction: 1;

...

.getImports() when (@isProduction = 1){
}

.getImports() {
    @import "productionStyles";
}

...
.getImports();

ただし、これは失敗するようで、常にインポートと解析を試みproductionStyles.lessます。保護されたミックスインは をカバーしていないと思い@importますが、どうすればそれを解決できますか?

私も試しました

@productionStyles: "productionStyles"; // or 0

...
@productionStyles: 0;


.getImports() when not (@productionStyles = 0){
    @import "@{productionStyles}";
}

...

とにかくそれをインポートしようとします>> FileError: '0.less' wasn't found in ...

私はそれがより大きなリファクタリングを必要とするだろうと考え始めていdevStylesますproductionStyles.条件付きでコンパイルします。

また、使用から離れgrunt-contrib-jshintて独自の少ないパーサーを作成することもできますが、最初に組み込みオプションを調べたいと思います。

productionStyle.lessファイル システムにない複数のファイルを参照するため@imports、失敗したものを無視してビルドを続行することは可能ですか? 他の場所でパーサーエラーが発生する可能性があるため、エラーチェックを無効にしたり、すべてのエラーを中断したりしたくありません...

4

1 に答える 1

3

スイッチパラメーターを使用して問題を解決しました:

index.html

  <!DOCTYPE html>
  <html>
    <head>
      <title></title>
      <link rel="stylesheet/less" type="text/css"  href="style.less" />
      <script src="less.js" type="text/javascript"></script>
    </head>
    <body>
      [foo]
    </body>
  </html>

style.less

.mixin(production) {
  @import "test.less";
  background: @color;
}

.mixin(dev) {
  background: green;
}

html {
  .mixin(production);
}

テストレス

@color: red;

less.jsは、プロジェクト ページから直接ダウンロードされた less v1.4.1です。

about のコードは赤い背景になります。html { .mixin(dev); }無効に切り替える@importと、背景が緑色に変わります。

あなたのソリューションも機能する可能性がありますが、HTML などにエラーがあります - 私はそれをチェックしていません。

于 2013-10-15T15:48:13.763 に答える